读BMP图像的RGB值的问题,高手请进!

时间:2022-01-18 18:40:27
各位大侠:我在读网页上的校验码图片的内容时发现一个奇怪的问题,不同网站使用的图片随机生成算法肯定是不同,我对某一网站的bmp图片保存下来然后读每一个点的颜色值正确并通过对颜色的比较能够得到图片上数字内容。但是我对另一网站的图片进行读取时(图片均为24色,读出的头信息参数值一样),读出的RGB值与实际值不相符合,有的黑色读出白色,白色读出黑色,无规律,有的值读出来又是对的:(

请问高手,会是哪里的问题呢?因为我是开始做图像方面的工作,没有经验啊,大家帮我分析一下吧,我可以吧那类图片的网址贴出来:http://member.optisp.com/silvermoon/index.html
这个网站认证码图片颜色值帮我读读看,读出来的真的和显示的不同,用C Buider试了一下也是一样的效果。
多谢了!!

8 个解决方案

#1


这样试试
CImage img;
img.Load("c:\\test.bmp");
for(int x=0;x<image.GetWidth();x++)
{
for(int y=0;y<img.GetHeight();y++)
{
 c=img.GetPixel(x,y);
 r=GetRValue(c);
 g=GetRValue(c);
 b=GetRValue(c);
}
}
注意包含头文件:"atlimage.h"

#2


你指读入的RGB值,是什么意思!?
可以正确显示!
其他的那??

会不会是你读取RGB的方法有问题?

#3


我在某一网站上的图片可以正确读出每个点的RGB每个分量的值,但换一种图片就不行?读图片的方法是从《VC++高级编程》上的例子,我觉得那种图片很奇怪,BM头信息和前一种图片完全一样,但是例子程序中图片显示却可以正确显示,可能是我读的时候应该怎么处理一下?各位要是感兴趣可以试试上面网址的图片,看看读出来的值对不对。

#4


54783szg(浪淘沙):
fatal error C1083: Cannot open include file: 'atlimage.h': No such file or directory
在MSDN中也搜索不到atlimage,是不是写错了?我没用过这个啊,帮帮忙了再!

#5


up

#6


// Create a Bitmap object from a JPEG file.
   Bitmap myBitmap(L"Climber.jpg");

   // Get the value of a pixel from myBitmap.
   Color pixelColor;
   myBitmap.GetPixel(25, 25, &pixelColor);

   // Fill a rectangle with the pixel color.
   SolidBrush brush(pixelColor);
   graphics.FillRectangle(&brush, Rect(0, 0, 100, 100));

#7


http://community.csdn.net/Expert/topic/3224/3224943.xml?temp=.935177

#8


原来是我读的不对
汗…………

#1


这样试试
CImage img;
img.Load("c:\\test.bmp");
for(int x=0;x<image.GetWidth();x++)
{
for(int y=0;y<img.GetHeight();y++)
{
 c=img.GetPixel(x,y);
 r=GetRValue(c);
 g=GetRValue(c);
 b=GetRValue(c);
}
}
注意包含头文件:"atlimage.h"

#2


你指读入的RGB值,是什么意思!?
可以正确显示!
其他的那??

会不会是你读取RGB的方法有问题?

#3


我在某一网站上的图片可以正确读出每个点的RGB每个分量的值,但换一种图片就不行?读图片的方法是从《VC++高级编程》上的例子,我觉得那种图片很奇怪,BM头信息和前一种图片完全一样,但是例子程序中图片显示却可以正确显示,可能是我读的时候应该怎么处理一下?各位要是感兴趣可以试试上面网址的图片,看看读出来的值对不对。

#4


54783szg(浪淘沙):
fatal error C1083: Cannot open include file: 'atlimage.h': No such file or directory
在MSDN中也搜索不到atlimage,是不是写错了?我没用过这个啊,帮帮忙了再!

#5


up

#6


// Create a Bitmap object from a JPEG file.
   Bitmap myBitmap(L"Climber.jpg");

   // Get the value of a pixel from myBitmap.
   Color pixelColor;
   myBitmap.GetPixel(25, 25, &pixelColor);

   // Fill a rectangle with the pixel color.
   SolidBrush brush(pixelColor);
   graphics.FillRectangle(&brush, Rect(0, 0, 100, 100));

#7


http://community.csdn.net/Expert/topic/3224/3224943.xml?temp=.935177

#8


原来是我读的不对
汗…………