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

OpenCV-在python中将轮廓作为numpy数组附加到ROI中,python,arrays,opencv,numpy,Python,Arrays,Opencv,Numpy,在下面的图片中,我找到并绘制了我的物体的轮廓(绿色)。我想得到一个numpy数组的轮廓坐标,所以我使用了 array=np.vstack(等高线).squence()。这给了我数组中整个轮廓的坐标 我的问题:是否可以仅将ROI(红方)内的轮廓坐标(两条绿线)附加到数组中 我知道我可以在一个ROI内单独找到轮廓,但我对这样做感兴趣,因为计划是有几个ROI,我不想为每个ROI单独找到轮廓。非常感谢您的帮助 具有轮廓的图像 原始图片: 如果有人感兴趣,以下是代码: import numpy as

在下面的图片中,我找到并绘制了我的物体的轮廓(绿色)。我想得到一个numpy数组的轮廓坐标,所以我使用了
array=np.vstack(等高线).squence()
。这给了我数组中整个轮廓的坐标

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

我知道我可以在一个ROI内单独找到轮廓,但我对这样做感兴趣,因为计划是有几个ROI,我不想为每个ROI单独找到轮廓。非常感谢您的帮助

具有轮廓的图像

原始图片:

如果有人感兴趣,以下是代码:

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)

对于绿色轮廓的每个坐标,检查
x
是否大于正方形的
x
,是否小于正方形的
x+w
。同样,检查
y
是否大于正方形的
y
,是否小于正方形的
y+h
。希望你能理解……这是一个简单快捷的方法,非常感谢!我有一个快速跟进,你有一个好主意如何将绿线坐标分成两个独立的数组?再次感谢:)哇,真是太棒了!!它刚从我头顶上掉下来!!!。。两个独立的数组意思是,左边的绿线进入一个数组,右边的绿线进入另一个数组?是的,当然:)执行自适应阈值将分别获得这两行。然后您可以找到这些点,并将它们放在两个不同的数组中