我是opencv的新手,请原谅我的无知。。。在
基本上:我对我的形象感兴趣。我想把它提取出来。在
我的问题来自于缩小原始图像的尺度以便于处理。我在较小的图像上找到了物体的轮廓。我真正想做的是利用轮廓的信息从原始的全尺寸图像中提取物体。在
我真的只能想到两种方法来实现这一点,但我不知道在opencv中哪种方法是有意义的:调整轮廓大小。然后在原图上画出来。在
(我正在使用的那个,没有成功…)使用轮廓创建一个蒙版。调整遮罩的大小。然后将遮罩添加到原始图像中。在
我用的是2号,但我觉得面罩有问题。调整大小后,它不再包含轮廓。在
以下是我当前代码的重要部分:image = cv2.imread(path)
orig = image.copy()
...
#resize the image
image = cv2.resize(image, dim, interpolation = cv2.INTER_AREA)
....
#convert to gray scale
...
#get contour
(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
...
screenCnt = cv2.approxPolyDP(c, 0.01 * peri, True) #
...
#create the mask
mask = np.ones(image.shape,np.uint8)*255
cv2.drawContours(mask,[screenCnt],0,(0,0,0),-1)
cv2.imshow("Small mask",mask) #
print(mask.shape) #
cv2.waitKey(0)
#now resize the mask
mask_big = cv2.resize(mask,(0,0),fx=ratio,fy=300)
cv2.imshow("Big mask",mask_big) #
cv2.waitKey(0)
我一直在网上搜索,运气不好,但我想我遗漏了一些基本的东西。
万分感谢所有的回答者!在