OpenCV - 在ROI中将轮廓附加为python中的numpy数组

时间:2017-03-06 15:32:51

标签: python arrays opencv numpy

在下图中,我找到并绘制了物体的轮廓(绿色)。我想把轮廓坐标作为一个numpy数组,所以我用过  array = np.vstack(contours).squeeze()。这给了我一个数组中整个轮廓的坐标。

我的问题:是否可以仅将ROI(红色方块)内的轮廓坐标(两条绿线)附加到数组中

我知道我可以单独在ROI中找到轮廓,但我有兴趣这样做,因为计划是有几个ROI,我不想为每个ROI分别找到轮廓。非常感谢任何帮助。

带轮廓的图像

Image with contour

原始图片:

original picture

以下是有兴趣的代码:

import numpy as np
import cv2

img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, 0)
inv = 255 - thresh

im2, contours, hierarchy = cv2.findContours(inv, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)
array = np.vstack(contours).squeeze()

x, y, w, h= 150, 50, 500 ,150
roi = img[y:(y+h),x:(x+w)]
cv2.rectangle(img,(x,y), (x+w, y+h), (0,0,255), 1)

cv2.imshow('image', img)
cv2.waitKey(0)

0 个答案:

没有答案