opencv 判断两张图片是否一样

bool cvMatEQ(const cv::Mat& data1, const cv::Mat& data2)
{
    bool success = true;
    // check if is multi dimensional
    if(data1.dims > 2 || data2.dims > 2)
    {
      if( data1.dims != data2.dims || data1.type() != data2.type() )
      {
        return false;
      }
      for(int32t dim = 0; dim < data1.dims; dim++){
        if(data1.size[dim] != data2.size[dim]){
          return false;
        }
      }
    }
    else
    {
      if(data1.size() != data2.size() || data1.channels() != data2.channels() || data1.type() != data2.type()){
        return false;
      }
    }
    int nrOfElements = data1.total()*data1.elemSize1();
    //bytewise comparison of data
    int cnt = 0;
    for(cnt = 0; cnt < nrOfElements && success; cnt++)
    {
      if(data1.data[cnt] != data2.data[cnt]){
        success = false;
      }
    }
    return success;
  }

在C#中使用OpenCV判断两张图片的颜色是否完全一致,通常需要比较图片的像素值。以下是实现这一功能的基本步骤: 1. 引入OpenCV库:确保你的项目中已经安装了Emgu CV(OpenCV的一个.NET封装版本)或其他适用于C#的OpenCV绑定。 2. 加载图片:使用Emgu CV加载你想要比较的两张图片到两个不同的图像变量中。 3. 获取像素数据:将每张图片的像素数据读取出来,通常是以二维数组的形式。 4. 比较像素:遍历图片的像素数据,比较对应位置的像素颜色值是否完全相同。 5. 输出结果:根据比较结果,输出两张图片是否颜色完全一致的结论。 下面是一个简化的代码示例: ```csharp using Emgu.CV; using Emgu.CV.Structure; using System; class Program { static void Main() { // 加载图片 Image<Bgr, byte> image1 = new Image<Bgr, byte>("path_to_image1.jpg"); Image<Bgr, byte> image2 = new Image<Bgr, byte>("path_to_image2.jpg"); // 检查两张图片是否尺寸相同 if (image1.Size != image2.Size) { Console.WriteLine("图片尺寸不一致,无法比较。"); return; } // 初始化计数器 int differences = 0; // 获取图片的宽度和高度 int width = image1.Width; int height = image1.Height; // 比较每个像素的颜色值 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { // 获取当前像素颜色 var pixel1 = image1[y, x]; var pixel2 = image2[y, x]; // 比较两个像素颜色是否一致 if (pixel1 != pixel2) { differences++; } } } // 判断两张图片是否颜色完全一致 if (differences == 0) { Console.WriteLine("两张图片颜色完全一致。"); } else { Console.WriteLine("两张图片在 {0} 个像素点的颜色不一致。", differences); } } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值