在线求助图片比较 BitmapData LockBits 急。。。。
如何利用 LockBits 快速比较图片呢?
例如已有图片如下:
然後我有小图片 笑脸 跟 红心 ,我该如何利用 BitmapData LockBits 来比较呢?
图片的宽高为250pix组成的~
- C# code
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
[解决办法]
http://www.cnblogs.com/blsong/archive/2010/09/10/1823248.html
[解决办法]
小图片是缩略图吗?
如果是 用这个方法是比较不出来的
此方法只能比较完全相同的图片 大小不一样 比较不出来的
比较两张图片是否完全相同 还可以 将图片读入到内存流 然后转换成byte数组 比较数组是否一致
楼主如果想研究 图像匹配的话 赶紧停止这种方式 网上搜索 OpenCV 或者 Emgu CV