ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何在opencv 2.4.11 python中调整轮廓大小? (目标:对象提取)

2019-07-08 07:55:47  阅读:497  来源: 互联网

标签:python opencv mask contour


我是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) #<--the contour
...

#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) #<--- looks good
print(mask.shape) #<---returns a 3 element tuple
cv2.waitKey(0)

#now resize the mask
mask_big = cv2.resize(mask,(0,0),fx=ratio,fy=300)
cv2.imshow("Big mask",mask_big) #<--- ends up big, but all white (no contour)
cv2.waitKey(0)

我一直在没有运气的情况下搜索互联网,但我想我在这里缺少一些基本的东西.
万分感谢所有回答者!

解决方法:

我认为这是一个很老的问题.但是,我有同样的一个,并且无法通过代码示例找到快速答案.这是一个例子(对于opencv 3.4)

_, contours, _ = cv2.findContours(mask.astype(np.uint8), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)

coef_y = img_orig.shape[0] / img_resized.shape[0]
coef_x = img_orig.shape[1] / img_resized.shape[1]

for contour in contours:
    contour[:, :, 0] = contour[:, :, 0] * coef_x
    contour[:, :, 1] = contour[:, :,  1] * coef_y

    cv2.drawContours(img_orig, contour, -1, (0, 255, 0), 2)

标签:python,opencv,mask,contour
来源: https://codeday.me/bug/20190708/1399570.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有