计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~
生活随笔
收集整理的這篇文章主要介紹了
计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
計(jì)算機(jī)視覺(jué)開(kāi)源庫(kù)OpenCV繪制輪廓,并將輪廓排序~示例效果如下:
原圖:
示例代碼如下:
#!/usr/bin/env python3import cv2def sort_contours(cnts, method="left-to-right"):reverse = Falsei = 0if method == "right-to-left" or method == "bottom-to-top":reverse = Trueif method == "top-to-bottom" or method == "bottom-to-top":i = 1boundingBoxes = [cv2.boundingRect(c) for c in cnts](cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes),key=lambda b:b[1][i], reverse=reverse))return (cnts, boundingBoxes)def draw_contour(image, c, i):M = cv2.moments(c)cX = int(M["m10"] / M["m00"])cY = int(M["m01"] / M["m00"])cv2.putText(image, "#{}#".format(i + 1), (cX-35, cY+10), cv2.FONT_HERSHEY_SIMPLEX,1.0, (0, 255, 0), 2)return imageimage = cv2.imread("cntdemo.jpg") cv2.imshow("Input Image", image)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) _, binimg = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)_, contours, _ = cv2.findContours(binimg, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)contours = sorted(contours, key=cv2.contourArea, reverse=False)[:3] cv2.drawContours(image, contours, -1, (0, 0, 255), 2)(contours, boundingBoxes) = sort_contours(contours, method="left-to-right")for (i, c) in enumerate(contours):draw_contour(image, c, i)cv2.imshow("Result Image", image)cv2.waitKey(0) cv2.destroyAllWindows()?
總結(jié)
以上是生活随笔為你收集整理的计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python统计网站访问日志log中的I
- 下一篇: 计算机视觉开源库OpenCV之绘制轮廓函