在我的项目中,我的图像1包含几何cad模型,而另一个图像2包含相同的几何cad模型,但是其中缺少一些东西。所以我必须找出这两个部分相同还是不同?通过在图像上指示一些标记来给出图像2中缺少零件的位置。

最佳答案

如果我正确理解了您的问题,请采用以下方法:
导入图像,然后对它们运行来自opencv的减法,然后是np.any。

这是一个示例代码(使用python):

import cv2
import numpy as np

image1 = cv2.imread("banana.jpg")
image2 = cv2.imread("banana2.jpg")

difference = cv2.subtract(image1, image2)

result = not np.any(difference) #if difference is all zeros it will return False

if result is True:
    print "The images are the same"
else:
    cv2.imwrite("result.jpg", difference)
    print "the images are different"

C++版本:
auto image1 = cv::imread("banana.jpg");
auto image2 = cv::imread("banana2.jpg");

cv::Mat difference;
cv::absDiff(image1,image2,difference);

auto result=cv::countNonZero(difference)>0;

if(result){
    std::cout << "The images are the same";
}
else{
    cv::imwrite("result.jpg", difference)
    std::cout << "the images are different";
}

关于c++ - 如何找出两个图像之间的物体差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34986598/

10-12 22:45