delphi之颜色转换和像素访问
2013-05-29 16:43
134 查看
模拟需要找色,找图等等功能,我们先要熟悉有关的知识。
我们的目的是为了找色和找图,所以只用考虑只需要处理24B颜色(PF24BIT)。
TColor 值是以十六进制进行存储的,低三位分别表示红、绿、蓝三种基色的饱和度。
var
C:Tcolor
R,G,B:Byte;
TColor转换成RGB的值
R:=GetRValue(C);
G:=GetGValue(C);
B::=GetBValue(C);
或
R:=C and $FF;
G:=(C and $FF00) shr 8;
B:=(C and $FF0000) shr 16;
RGB转换成TColor的值
C:=StrToInt(IntToHex(B,2)+IntToHex(G,2)+IntToHex(R,2));
或
C:=RGB(R,G,B);
对BMP像素的快速访问,一般使用scanline.
type //补充定义,方便使用
pRGBTripArray=^TRGBTripleArray;
TRGBTripleArray=array[0..1024-1] of TRGBTriple;
var
row:pRGBTripArray;
p:TRGBTriple;
访问第y行第x列(x,y)
row := bmp.scanline[y];
p:= row [x];
R:= p.rgbtRed;
G:=p.rgbtGreen;
B:=p.rgbtBlue;
另外的一种访问方式
var
p: PByteArray;
访问第y行第x列(x,y)
p := bmp..scanline[y];
然后用p[x * 3], p[x * 3 + 1], p[x * 3 + 2] 来访问
我们的目的是为了找色和找图,所以只用考虑只需要处理24B颜色(PF24BIT)。
TColor 值是以十六进制进行存储的,低三位分别表示红、绿、蓝三种基色的饱和度。
var
C:Tcolor
R,G,B:Byte;
TColor转换成RGB的值
R:=GetRValue(C);
G:=GetGValue(C);
B::=GetBValue(C);
或
R:=C and $FF;
G:=(C and $FF00) shr 8;
B:=(C and $FF0000) shr 16;
RGB转换成TColor的值
C:=StrToInt(IntToHex(B,2)+IntToHex(G,2)+IntToHex(R,2));
或
C:=RGB(R,G,B);
对BMP像素的快速访问,一般使用scanline.
type //补充定义,方便使用
pRGBTripArray=^TRGBTripleArray;
TRGBTripleArray=array[0..1024-1] of TRGBTriple;
var
row:pRGBTripArray;
p:TRGBTriple;
访问第y行第x列(x,y)
row := bmp.scanline[y];
p:= row [x];
R:= p.rgbtRed;
G:=p.rgbtGreen;
B:=p.rgbtBlue;
另外的一种访问方式
var
p: PByteArray;
访问第y行第x列(x,y)
p := bmp..scanline[y];
然后用p[x * 3], p[x * 3 + 1], p[x * 3 + 2] 来访问
相关文章推荐
- delphi之颜色转换和像素访问
- delphi之颜色转换和像素访问
- 如何直接访问CImage地址获取对应像素颜色
- JavaScript获取图片像素颜色并转换为box-shadow显示
- opencv学习(5)图像像素的访问、颜色通道的分离和融合
- 获取图片像素颜色,转换为CSS3 box-shadow显示
- 使用指针ptr指针访问像素,并且减少颜色数量
- 获取图片像素颜色,转换为CSS3 box-shadow显示
- 图像的深度转换,图像提取,像素级访问及时间测量
- web颜色转换为delphi
- JavaScript获取图片像素颜色并转换为box-shadow显示
- Delphi的颜色转换
- Delphi 颜色转换
- opencv学习(十)颜色缩减 // 查表 // 计时 // 访问像素的三个方法(指针/STL迭代器(待详细了解)/动态地址)//历遍图像的14种方法
- Opencv2与Opencv1访问像素语法转换
- QImage转换图片格式,并替换特定颜色像素
- 像素临近区域、颜色通道、ROI区域的访问---opencv.2学习笔记2
- RGB 颜色值与十六进制颜色码之间的相互转换
- 学习openCV之Mat类型访问每个像素
- delphi2010 域名转换IP