首页 > 编程语言 > 详细

视觉处理算法基础:米粒识别

时间:2021-03-04 19:07:13      阅读:24      评论:0      收藏:0      [点我收藏+]
# encoding: utf -8
import cv2 as cv
import copy

filename = ‘rice.png‘
img = cv.imread(filename)
# 灰度处理, 即使是黑白图片在计算机中也是三通道
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

# 使用大津算法阈值化
_, bw = cv.threshold(gray, 0, 0xff, cv.THRESH_OTSU)

element = cv.getStructuringElement(cv.MORPH_CROSS, (3, 3))
# 使用数学形态学开运算减少噪声
bw = cv.morphologyEx(bw, cv.MORPH_OPEN, element)
# 为了对阈值化图像进行分割,将阈值化结果进行deepcopy
seg = copy.deepcopy(bw)
# 使用findContours得到分割完之后各个区域对应的轮廓,返回在cnts,也就是各个轮廓的集合
bin, cnts, hier = cv.findContours(seg, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
count = 0

for i in range(len(cnts), 0, -1):
# 对所有轮廓进行一个循环,先得到当前轮廓,面积小于10则可能是噪声,丢弃
c = cnts[i-1]
area = cv.contourArea(c)
if area < 10:
continue
count = count + 1
print(‘blob‘, i, ‘:‘, area)
# 得到矩阵四个顶点
x, y, w, h = cv.boundingRect(c)
# 在img图片中输出分割后的矩形,rectangle函数参数依次为原图,左上角顶点pt,右下角顶点pt,颜色三元组,宽度
cv.rectangle(img, (x, y), (x+w, y+h), (0, 0, 0xff), 1)
# 在img图片中输出计数文本
cv.putText(img, str(count), (x, y), cv.FONT_HERSHEY_PLAIN, 0.5, (0, 0xff, 0))

print(‘米粒数量: ‘, count)
cv.imshow(‘原图‘, img)
cv.imshow(‘阈值化‘, bw)


cv.waitKey()
cv.destroyWindow()

视觉处理算法基础:米粒识别

原文:https://www.cnblogs.com/hanker99/p/14481751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!