Pythonopencv实现⽟⽶粒计数
input什么意思电脑上Python笔记(⼀)
(本⽂⽤来记录⾃⼰学习python的笔记,公开可看,共同学习)
PS:思路就是采⽤距离变换和轮廓来实现⽟⽶粒计数和标记优良差
⼀、调⽤opencv,numpy库
import cv2
import numpy as np
⾸先调⽤两个常见的库opencv和numpy,下⾯会⽤到
这两个库需要⾃⾏安装:
1. 安装opencv:命令⾏输⼊pip insatll opencv-python
2. 安装numpy:命令⾏输⼊pip install numpy
⼆、读⼊图⽚
img=cv2.imread(r'C:\Users\30362\Desktop/Corn.jpg')
cv2.imshow('原图',img)
python基础代码写字cv2.imread('路径'):路径中不能含有中⽂(如果你使⽤中⽂的话python不会报错,但是⼀但⽤到这个图⽚就会⽴马报错),注意我的路径格式
cv2.imshow():正常图⽚显⽰,(图⽚名称“原图”在python可能显⽰的是乱码,是因为还需要配置其他库才⾏)三、灰度处理
gray_img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#灰度处理base58解码器
cv2.imshow('gray_img',gray_img)
cv2.cvtColor():⾊彩空间转换 RGB转GRAY(图像上的灰度值范围为0~255)
四、⼆值化
ret,th1=cv2.threshold(gray_img,120,255,cv2.THRESH_BINARY)cmd里面telnet怎么用
cv2.imshow('th1',th1)
th1为⼆值化处理后的图像(图像上的像素点值只有0,255两种)
120为阈值,⼤于这个阈值像素点为255(即⽩⾊),⼩于阈值则为0(即⿊⾊),这是默认的,可改;
五、腐蚀变换
erosion = de(th1,kernel,iterations = 1)#腐蚀
cv2.imshow('erosion',erosion)
plsql表编辑界面列选项不能编辑doe():对图像进⾏腐蚀,kernel为卷积核(需⾃⼰定义,例kernel = np.ones((7,7),np.uint8))
腐蚀变换的⽬的是消除噪点(开运算也可以,只是此处要⽐较是否腐蚀后图上的各个轮廓是否分离,通过上图可以发现仍有粘连,所以就有了下⼀步——距离变换)
六、距离变换
dist_img = cv2.distanceTransform(erosion, cv2.DIST_L1, cv2.DIST_MASK_3)#距离变换
cv2.imshow('距离变换',dist_img)
dist_output = alize(dist_img, 0, 1.0, cv2.NORM_MINMAX)#归⼀化
cv2.imshow('dist_output',dist_output*80)
cv2.distanceTransform:距离变换(计算图像中像素点到最近零像素点的距离距离变换后得到轮廓的⾻架,通过⼆值化可以有效的去除重叠部分)
经过归⼀化得到的图像dist_output灰度值在0~1.0
数见不鲜的数组词此处dist_output*80是因为归⼀化之后灰度值在0~1.0,不容易观察
七、⼆值化+开运算
ret,th2=cv2.threshold(dist_output*80,0.3,255,cv2.THRESH_BINARY)
cv2.imshow('th2',th2)
kernel = np.ones((5,5),np.uint8)
opening = phologyEx(th2, cv2.MORPH_OPEN, kernel)
cv2.imshow('opening',opening)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论