2016-01-25 58 views
0

在我的项目中,我有图像1包含几何cad模型和另一个具有相同几何cad模型的图像2,但有些东西在那里丢失。所以我必须找出那两个部分是相同的还是不相同?想通过在图像上指示一些标记来给图像2中缺少部分的位置。如何找出两幅图像之间的物体差异?

回答

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"; 
} 
+0

@ ibininja我没有蟒蛇的知识将ü请给它的C++ ? –

+1

@ibininja请纠正我,如果我犯了一些错误 –

+1

@HumamHelfawi很好地完成。 – ibininja