我正在使用OpenCV库将matlab代码转换为C ++。
任何人都可以在OpenCV中告诉我roipoly matlab函数等效吗
或者如何使用OpenCV获得相同的功能?
BW = roipoly(I, c, r)
BW = roipoly(I,c,r)返回由向量c和r描述的多边形指定的ROI,它们分别指定每个顶点的列和行索引。 c和r的大小相同。
在我的情况下,我想从图像中提取三角形roi ,因此c和r的大小为3x1。
任何人都可以告诉我如何使用OpenCV在C ++中执行此操作吗?
答案 0 :(得分:2)
在OpenCV中没有像roipoly这样的内置函数。
相反,OpenCV提供了cv2.polyline()和cv2.drawContours()等函数。如果你有顶点的坐标,(如matlab所示)你可以用它们创建一个numpy数组。然后在黑色图像上绘制此多边形,这将为您提供roipoly返回的蒙版图像。下面演示了一个例子:
import cv2
import numpy as np
img = cv2.imread('eight.png')
mask = np.zeros(img.shape[:2],dtype = 'uint8')
c = [194, 253, 293, 245]
r = [72, 14, 76, 125]
rc = np.array((c,r)).T
cv2.drawContours(mask,[rc],0,255,-1)
cv2.drawContours(img,[rc],0,255,2)
mask = cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)
res = np.hstack((img,mask))
以下是我得到的结果: