mar*_*rco 1 python opencv opencv-contour
如何使用 python opencv 绘制/保存图像的内部轮廓?我知道如何获得最大的轮廓,我想保存它和内部孔,它们也是轮廓。
import numpy as np
import cv2
from matplotlib import pyplot as plt
rgb = cv2.imread('MIL_NPGERBV2.png')
grayImg = cv2.imread('MIL_NPGERBV2.png', cv2.CV_LOAD_IMAGE_GRAYSCALE)
#to apply properly contour algorithm we need convert to binary
(thresh, bwImage) = cv2.threshold(image, 128, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
img1 = rgb.copy()
img2 = rgb.copy()
contours, hierarchy = cv2.findContours(bwImage,cv2.RETR_TREE,
cv2.CHAIN_APPROX_SIMPLE)
#show all contours
cv2.drawContours(img1, contours, -1, (0,255,0), 2)
out = np.hstack([img1])
cv2.imshow('Output', out)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
findContours
如果礼貌地询问,OpenCV 的方法可以为您提供内部轮廓。
这是以下mode
选项之一cv2.findContours()
:
CV_RETR_CCOMP
检索所有轮廓并将它们组织成两级层次结构。在顶层,有组件的外部边界。在第二层,有洞的边界。如果连接组件的孔内有另一个轮廓,它仍然放在顶层。
所以问一个不错的
myContours = cv2.findContours(myImg,cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
Run Code Online (Sandbox Code Playgroud)
应该给你一种嵌套的对象数组,第一个项目给出无用的轮廓,其余的给出内部。
我稍后会尝试更新答案以包含 MCVE(但前提是您也将问题更新为包含一个 ^^)
归档时间: |
|
查看次数: |
3376 次 |
最近记录: |