using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Features2D;
using Emgu.CV.Structure;
using Emgu.CV.UI;
using Emgu.CV.Util;
using Emgu.CV.GPU;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
Image<Bgr, Byte> modelImage = new Image<Bgr, byte>("box1_Same.png");//child
Image<Bgr, Byte> observedImage = new Image<Bgr, byte>("box2.png");//parent
Image<Bgr, Byte> observedImagae = modelImage.Cmp(observedImage, CMP_TYPE.CV_CMP_GE);
// Image<Bgr, Byte> Difference; //Difference between the two frames
//Difference = modelImage.AbsDiff(observedImage);
}
catch (Exception ex)
{
throw;
}
}
}
}
在上面的代码中,我使用了CMP()方法来比较两张图片,“如果传入两张相同的图片进行比较,则可以正常工作。”但是,如果传入两张不同的图片,则会出现以下异常:“OpenCV: src.depth() == dst.depth() && src.size == dst.size”,我尝试通过更改枚举类型CMP_TYPE.CV_CMP_GE来解决问题,但是仍然存在相同的问题。
需要比较的图片如下:
第一张:
![box1.png](https://istack.dev59.com/5IA5q.webp)
第二张(与第一张相同):
![box1_Same.png](https://istack.dev59.com/444eP.webp)
第三张(不同于前两张):
![box2.png different image](https://istack.dev59.com/YZ182.webp)