是否可以在OpenCV上存储特定图像的数据?

时间:2014-10-10 00:39:38

标签: opencv memory image-processing computer-vision

我只是想知道这是否可行。例如,如果我要在特定图像(http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html)中查找轮廓,是否可以存储表示特定图像中轮廓的数据?然后,我可以有另一个图像并检测轮廓并存储它们,然后将每个图像的轮廓数据相互比较,以查看是否存在具有相关几何特征的对象?

1 个答案:

答案 0 :(得分:1)

你的问题不够明确,所以我提前为我的糟糕答案道歉。无论如何,让我试着回答一下:

  
      
  1. 我可以存储代表特定图像中轮廓的数据吗?
  2.   

如果您take a look at those docs,您可能会注意到findContours()使用一个参数作为输入,另一个作为输出,因此您无法将输入image传递给此方法,还使用它来存储输出contours,因为该方法会抛出一个异常(我过去曾尝试过这个)。

  
      
  1. 我可以拥有另一个图像并检测轮廓并存储它们,然后将每个图像的轮廓数据相互比较,看是否有相关几何特征的物体?
  2.   

可以分析2个轮廓并将它们相互比较。事实上,3. Match Shapes of this tutorial部分共享使用 hu-moments 的Python代码来演示如何实现这一点(对翻译,轮换和缩放不变):

enter image description here

import cv2
import numpy as np

img1 = cv2.imread('star.jpg',0)
img2 = cv2.imread('star2.jpg',0)

ret, thresh = cv2.threshold(img1, 127, 255,0)
ret, thresh2 = cv2.threshold(img2, 127, 255,0)
contours,hierarchy = cv2.findContours(thresh,2,1)
cnt1 = contours[0]
contours,hierarchy = cv2.findContours(thresh2,2,1)
cnt2 = contours[0]

ret = cv2.matchShapes(cnt1,cnt2,1,0.0)
print ret