基本上:我的形象中有一个感兴趣的对象.我想提取它.
我的问题来自缩小原始图像以便于处理.我在较小的图像上找到了对象的轮廓.我真正想做的是使用有关该轮廓的信息从原始全尺寸图像中提取对象.
我真的只想到两种方法来做到这一点,但我不知道哪些方法在opencv中实际上有意义:
>调整轮廓大小.然后在原始图像上绘制它.
>(我正在使用的那个,没有成功……)使用轮廓创建一个蒙版.调整面具大小.然后将蒙版添加到原始图像.
我正在使用2号,但我认为面具有问题.调整大小后,它不再包含轮廓.
以下是我当前代码的重要部分:
image = cv2.imread(path)orig = image.copy()...#resize the imageimage = 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 maskmask = np.ones(image.shape,np.uint8)*255cv2.drawContours(mask,[screenCnt],(0,0),-1)cv2.imshow("Small mask",mask) #<--- looks goodprint(mask.shape) #<---returns a 3 element tuplecv2.waitKey(0)#Now resize the maskmask_big = cv2.resize(mask,fx=ratio,fy=300)cv2.imshow("Big mask",mask_big) #<--- ends up big,but all white (no contour)cv2.waitKey(0)
我一直在没有运气的情况下搜索互联网,但我想我在这里缺少一些基本的东西.
万分感谢所有回答者!
_,contours,_ = cv2.findContours(mask.astype(np.uint8),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,255,2)总结
以上是内存溢出为你收集整理的如何在opencv 2.4.11 python中调整轮廓大小? (目标:对象提取)全部内容,希望文章能够帮你解决如何在opencv 2.4.11 python中调整轮廓大小? (目标:对象提取)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)