① 如何将图片转换成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。