古今中外文史赏析每周一赞

查找轮廓实现物体计数2

2023-10-03  本文已影响0人  大龙10

书名:计算机视觉40例从入门到深度学习:OpenCV-Python
作者:李立宗
出版社:电子工业出版社
出版时间:2022-07-01
ISBN:9787121436857


一、zip函数

a=("汪淼","罗辑","程心","章北海","常伟思")
b=("Python","OpenCV","计算机视觉","机器学习","深度学习")
for n,i,j in zip(range(len(a)),a,b):
    print(n,i,j)

运行结果

二、预处理

三、程序

检测到共29个
import cv2

img = cv2.imread('d:\\cells.jpg')
cv2.imshow("cells",img)

gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 色彩空间转换:彩色图像一灰度图像
ishow=img.copy()
ret, binary  = cv2.threshold(gray,0,100,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) # 阙值处理

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3)) #核

erosion=cv2.erode(binary,kernel,iterations=3)    # 腐蚀操作
dilation=cv2.dilate(erosion,kernel,iterations=3) # 膨胀操作
gaussian = cv2.GaussianBlur(erosion,(3,3),0)    # 高斯滤波

# ================查找所有轮廓======================
contours,hirearchy=cv2.findContours(gaussian,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
contoursOK=[]
for i in contours:
    if cv2.contourArea(i)>30:
        contoursOK.append(i)
draw=cv2.drawContours(img,contoursOK,-1,(0,255,0),2)

for i,j in zip(contoursOK,range(len(contoursOK))):
    M = cv2.moments(i)
    cX=int(M["m10"]/M["m00"])
    cY=int(M["m01"]/M["m00"])
    cv2.putText(draw, str(j), (cX,cY),cv2.FONT_HERSHEY_PLAIN,1.5,(0,0,255),2)  # 在质心描绘数字

# ============显示图片====================
cv2.imshow("draw",draw)
print(len(contoursOK))

cv2.waitKey()
cv2.destroyAllWindows()

上一篇 下一篇

猜你喜欢

热点阅读