C# 判断两张图片是否一致,极快速

#region 判断图片是否一致
       /// <summary>
       /// 判断图片是否一致
       /// </summary>
       /// <param name="img">图片一
       /// <param name="bmp">图片二
       /// <returns>是否一致</returns>
       public bool IsSameImg(Bitmap img, Bitmap bmp)
       {
           //大小一致
           if (img.Width == bmp.Width && img.Height == bmp.Height)
           {
               //将图片一锁定到内存
               BitmapData imgData_i = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
               IntPtr ipr_i = imgData_i.Scan0;
               int length_i = imgData_i.Width * imgData_i.Height * 3;
               byte[] imgValue_i = new byte[length_i];
               Marshal.Copy(ipr_i, imgValue_i, 0, length_i);
               img.UnlockBits(imgData_i);
               //将图片二锁定到内存
               BitmapData imgData_b = img.LockBits(new Rectangle(0, 0, img.Width, img.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
               IntPtr ipr_b = imgData_b.Scan0;
               int length_b = imgData_b.Width * imgData_b.Height * 3;
               byte[] imgValue_b = new byte[length_b];
               Marshal.Copy(ipr_b, imgValue_b, 0, length_b);
               img.UnlockBits(imgData_b);
               //长度不相同
               if (length_i != length_b)
               {
                   return false;
               }
               else
               {
                   //循环判断值
                   for (int i = 0; i < length_i; i++)
                   {
                       //不一致
                       if (imgValue_i[i] != imgValue_b[i])
                       {
                           return false;
                       }
                   }
                   return true;
               }
           }
           else
           {
               return false;
           }
       }
       #endregion
时间: 2024-12-26 17:39:44

C# 判断两张图片是否一致,极快速的相关文章

C# 判断两张图片是否一致的快速方法

#region 判断图片是否一致 /// <summary> /// 判断图片是否一致 /// </summary> /// <param name="img">图片一</param> /// <param name="bmp">图片二</param> /// <returns>是否一致</returns> public bool IsSameImg(Bitmap img

php判断两张图片是否相同

1 <?php 2 /** 3 * sha1_file 4 计算并返回由 filename 指定的文件的 sha1 散列值. 5 该散列值是一个 40 字符长度的十六进制数字 6 * 成功返回一个字符串,否则返回 FALSE. 7 **/ 8 9 //这两个方法只能判断两张完全相同的图片,包括文件的大小,尺寸,另外这个方法还可以用来判断文件. 10 $file = __DIR__.DIRECTORY_SEPARATOR."1.jpg"; 11 12 $file2 = __DIR_

opencv_判断两张图片是否相同

QQ:231469242 pip install opencv 如果找不到版本,去非官方下载opencv第三方包http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载好文件放入C:/Anaconda3/Scripts 文件夹, 然后 用pip install opencv安装 # -*- coding: utf-8 -*- """ Created on Sat Dec 24 10:42:10 2016 @author: daxiong &q

快速的判断两个字符串型数组是否有交集

■[面试题]如何快速的判断两个数组是否有交集 public boolean hasIntersection(String[] array1, String[] array2) { ... } array1中,只要有一个在array2中,存在,就返回true,否则返回false 求最快的方法 原帖:http://www.oschina.net/question/1756518_241715 ■代码 --------------------------------------------------

判断两个线段是否相交

我们的问题是这样的:给定一条线段的起点为$A_1$.终点为$A_2$,另一条线段的起点为$B_1$.终点为$B_2$,问线段$A_1A_2$和线段$B_1B_2$是否相交? 我们首先解释一下,两条线段相交的概念是指,存在一个点,这个点同时在两条线段上. 方法一(解方程法): 容易知道,线段$A_1A_2$上的点的集合为$A = A_1 * (1 - r_1) + A_2 * r_1$,其中$r_1 \in [0, 1]$:同理,线段$B_1B_2$上的点的集合为$B = B_1 * (1 - r

判断两线段是否相交 模板

1 struct point 2 { 3 double x, y; 4 point( double _x = 0, double _y = 0 ) 5 { 6 x = _x; 7 y = _y; 8 } 9 point operator-( point t ) 10 { 11 return point( x - t.x, y - t.y ); 12 } 13 double operator*( point t ) 14 { 15 return x * t.y - y * t.x; 16 } 17

Atitit 判断判断一张图片是否包含另一张小图片

1. keyword1 2.  模板匹配是在图像中寻找目标的方法之一(切割+图像相似度计算)1 3. 匹配效果2 4. 图片相似度的算法(感知哈希算法”(Perceptual hash algorithm)2 5. 性能结果2 6. 如何提升性能3 6.1. 可以采用简化的算法.二次匹配法,先大概确定区域3 6.2. 切割图片设置一个step3 7. 参考资料3 8. ------code3 1. keyword 图像匹配 图片是否另外一张图片的一部分 如果是标准图片,模板匹配就好 2.  模板

You can Solve a Geometry Problem too (hdu1086)几何,判断两线段相交

You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6837 Accepted Submission(s): 3303 Problem Description Many geometry(几何)problems were designed in the ACM/ICPC. A

Java 判断两个对象是否相等

一.使用 == 与 equals == : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() : 它的作用也是判断两个对象是否相等.但它一般有两种使用情况: 情况1:类没有覆盖equals()方法.则通过equals()比较该类的两个对象时,等价于通过"=="比较这两个对象. 情况2:类覆盖了equals()方法.一般,我们都覆盖equals()方法来两个对象的内容相等:若它们的