banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[Python]使用OpenCV进行轮廓检索

对遮罩层进行轮廓检索并合并到图像上 第一步使用高斯模糊 GaussianBlur 模糊边缘像素 第二步使用 Canny 侦测边界,丢弃部分散点 最后使用 findContours 找到外框

#对遮罩层进行轮廓检索并合并到图像上
def drawMaskContoursOverImage(image,mask):
# convert colorspace
gray = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
#image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

# 3\*3 GaussianBlur
# gray = cv2.GaussianBlur(gray, (3, 3), 0)
# canny detect edge
gray = cv2.Canny(gray, 100, 300)

ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH\_BINARY)

# binary是最后返回的二值图像
#findContours()第一个参数是源图像、第二个参数是轮廓检索模式,第三个参数是轮廓逼近方法
#输出是轮廓和层次结构,轮廓是图像中所有轮廓的python列表,每个单独的轮廓是对象边界点的(x,y)坐标的Numpy数组
binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR\_TREE, cv2.CHAIN\_APPROX\_SIMPLE)
cv2.drawContours(image, contours, -1, (0, 255, 0), 1)

# 写图像
cv2.imwrite('%s.masked.png'%pair\[0\],image,\[int(cv2.IMWRITE\_PNG\_COMPRESSION),3\])

参考 https://blog.csdn.net/dz4543/article/details/80655067

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.