① 如何將圖片轉換成RGB矩陣
RGB矩陣,就是一個三維數組,各維度分別保存紅綠藍的色值。
可以用
Image img = new Image("aaa.bmp");
Bitmap bmp = (Bitmap)img;
for(int x=0; x<圖片寬度; x++)
for(int y=0; y<圖片高度; y++)
{
Color pixelColor = bmp.GetPixel(x, y);
從pixelColor中取出紅綠藍的色值,保存到三維數組中
}
② 做一個系統,用GCC把圖片轉成RGB的矩陣,然後進行圖像處理。圖片轉化成RGB的矩陣怎麼實現給關鍵詞也行。
維數不對,X(:,:,2)是2維的,但X是3維的,改成Y=X(:,:,2)應該就行了
lena=imread('d:\lena.jpg');
a=lena(:,:,1);
b=lena(:,:,2);
c=lena(:,:,3);
x(:,:,1)=a;
x(:,:,2)=b;
x(:,:,3)=c;
imshow(x);
差不多這個樣子吧
③ C++如何將12bit的RGB圖像讀出並顯示呢
引用資源的方式,編譯器會為你編譯你的圖像,然後你直接用相應的方法把他畫出來就可以了。比如qt下畫一張圖片:
QPainter painter;
QImage image("你圖片路徑");
painter.drawImage(image);
④ 如何用C++獲取一張bmp圖片(24位)的RGB量及長寬
{
int x=5,y=5,width,height;//x,y是需要查找的點的坐標,從0開始
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);//啟動GDI+,方便載入點陣圖
Bitmap bmp(_T("E:\\c.bmp"));
HBITMAP hBmp = NULL;
bmp.GetHBITMAP(Color(0),&hBmp);//獲取點陣圖句柄
BITMAP bi = {0};
GetObject(hBmp,sizeof(BITMAP),&bi);//獲取點陣圖信息,包括深度,寬高,步長等
width = bi.bmWidth;height = bi.bmHeight;//保存寬高
byte *pBit = new byte[bi.bmWidthBytes*bi.bmHeight];
::GetBitmapBits(hBmp,bi.bmWidthBytes*bi.bmHeight,pBit);//獲取點陣圖數據
int n = y*bi.bmWidthBytes + x*bi.bmBitsPixel/8;
int out = RGB(pBit[n+2],pBit[n+1],pBit[n]);//定位到數據中獲取顏色信息
GdiplusShutdown(gdiplusToken);//關閉GDI+
}
這里是用GDI+載入點陣圖,也可以用第三方庫載入點陣圖獲取點陣圖數據然後直接定位像素,使用的時候記得加GDI+的頭文件,否則編譯不過
⑤ 求助,51單片機用PWM的RGB呼吸燈程序怎麼寫
#include<reg52.h>
sbitLED0=P2^0;//解碼器控制端,低有效
voidDelay(unsignedintt);//函數聲明
voidmain(void)
{
unsignedintset=400,pwm=0;//定義周期並賦值
while(1)//主循環
{
LED0=0;
Delay(60000);//延時,可以看到熄滅的過程
for(pwm=1;pwm<set;pwm++){
LED0=1;//熄滅LED
Delay(pwm);//延時長度,600次循環中從1加至599
LED0=1;//點亮LED
Delay(set-pwm);//延時長度,600次循環中從599減至1
}
LED0=1;
for(pwm=set-1;pwm>0;pwm--){//與逐漸變亮相反的過程
LED0=1;
Delay(pwm);
LED0=0;
Delay(set-pwm);
}
//主循環中添加其他需要一直工作的程序
}
}
voidDelay(unsignedintt)
{
while(--t);
}
⑥ 代碼中怎樣把RGB顏色值轉換成16進制
rgb顏色格式是由3組0~255的數字構成,分別是紅(Red)、綠(Green)、藍(Blue)的色值。
轉為16進制就是分別把紅綠藍三種顏色的色值轉為十六進制,前面加個井號
例如:
rgb(255,255,255),255的16進制為FF,所以結果就是#FFFFFF。