OpenCV轮廓排序(按照面积大小),原图如下:
代码如下:
import cv2
import numpy as np
# putText函数使用的字体定义
font = cv2.FONT_HERSHEY_SIMPLEX
PI = 3.1415926
# 读取图片、灰度转换、OTSU阈值
img = cv2.imread("test.png")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
# 查看二值化结果
cv2.imshow("thres", thresh)
cv2.imwrite("thres.jpg", thresh)
# 轮廓查找
_, contours,hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
def cnt_area(cnt):
area = cv2.contourArea(cnt)
return area
contours.sort(key = cnt_area, reverse=False)
for i in range(0, len(contours)):
(x, y, w, h) = cv2.boundingRect(conto