在线求助图片比较 BitmapData LockBits 急。。。。

weboscar 2012-05-28 06:14:02
如何利用 LockBits 快速比较图片呢?
例如已有图片如下:

然後我有小图片 笑脸 跟 红心 ,我该如何利用 BitmapData LockBits 来比较呢?
图片的宽高为250pix组成的~

private void button1_Click( object sender, EventArgs e)
{
Bitmap b = pictureBox1.Image as Bitmap;

int width = b.Width;
int height = b.Height;
BitmapData bd = b.LockBits ( new Rectangle( 0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb );
IntPtr imgPtr = bd.Scan0;
int stride = bd.Stride;
int widthByte = width*3;
int skipByte = stride - widthByte;
int [,,] rgbData = new int [width,height,3 ];
#region 讀取 RGB 資料
unsafe
{
byte* p = ( byte*) ( void*) imgPtr;
for ( int j = 0; j < height; j++)
{
for ( int i = 0; i < width; i++)
{
rgbData[i, j, 2 ] = p[ 0 ];
p++;
rgbData[i, j, 0 ] = p[ 0 ];
p++;
rgbData[i, j, 1 ] = p[ 0 ];
p++;
}
p += skipByte;
}
}
#endregion


看到别人的例子,这样可以读入到rgbData[]阵列,
但是就是不知道要如何用小图笑脸来比较大图,
PS:小图的宽高也是250pix
...全文
333 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weboscar 2012-05-29
  • 打赏
  • 举报
回复
在线求助图片比较 BitmapData LockBits 急。。。。
weboscar 2012-05-29
  • 打赏
  • 举报
回复
将图片读入到内存流然后转换成byte数组,
從大图片的宽高750*750截取出小图片笑脸的宽高250*250来作比较,
思路上是可以的~只是我不会截取字节这一个语法~
请叫我卷福 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

小图片笑脸的宽高250*250
大图片的宽高750*750
[/Quote]

用这种方法 肯定比较不了
weboscar 2012-05-29
  • 打赏
  • 举报
回复
小图片笑脸的宽高250*250
大图片的宽高750*750
请叫我卷福 2012-05-29
  • 打赏
  • 举报
回复
小图片是缩略图吗?
如果是 用这个方法是比较不出来的
此方法只能比较完全相同的图片 大小不一样 比较不出来的

比较两张图片是否完全相同 还可以 将图片读入到内存流 然后转换成byte数组 比较数组是否一致


楼主如果想研究 图像匹配的话 赶紧停止这种方式 网上搜索 OpenCV 或者 Emgu CV
caoqinghua 2012-05-29
  • 打赏
  • 举报
回复
http://www.cnblogs.com/blsong/archive/2010/09/10/1823248.html
ONE-PIECE 2012-05-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20120528/17/8fc50d63-d913-4187-9354-da7310ec8efa.html
回复下!!!!!!!!!!
顺便帮顶!!!!!!

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧