学习笔记(28):一学即懂的计算机视觉(第一季)-灰度阈值分割实战演练

立即学习:https://edu.csdn.net/course/play/26281/327086?utm_source=blogtoedu

基于边缘轮廓的分割:

在边缘检测的基础上,基于闭合边缘构建分割后的结果。边缘检测在二值化图像上进行。

OpenCV相关函数:

mode参数说明:

CV.RETR_EXTERNAL:只检测最外围轮廓,包含在外围轮廓内的内围轮廓被忽略;

CV.RETR_LIST:检测所有的轮廓,包括内围、外围轮廓,但是检测到的轮廓不建立等级关系,彼此之间独立,没有等级关系,这就意味着这个检索模式下不存在父轮廓或内嵌轮廓,所以hierarchy向量内所有元素的第3、第4个分量都会被置为-1,具体下文会讲到;

CV.RETR_CCOMP: 检测所有的轮廓,但所有轮廓只建立两个等级关系,外围为顶层,若外围内的内围轮廓还包含了其他的轮廓信息,则内围内的所有轮廓均归属于顶层;

CV.RETR_TREE: 检测所有轮廓,所有轮廓建立一个等级树结构。外层轮廓包含内层轮廓,内层轮廓还可以继续包含内嵌轮廓。

 method定义轮廓的近似方法,参数说明:

CV.CHAIN_APPROX_NONE:保存物体边界上所有连续的轮廓点到contours向量内;

CV.CHAIN_APPROX_SIMPLE:仅保存轮廓的拐点信息,把所有轮廓拐点处的点保存入contours向量内,拐点与拐点之间直线段上的信息点不予保留;

CV.CHAIN_APPROX_TC89_L1:使用teh-Chinl chain 近似算法;

CV.CHAIN_APPROX_TC89_KCOS:使用teh-Chinl chain 近似算法。

阈值化:

cv.threshold(img, thresh, maxval, type[, dst])

参数说明:

img:原图像。

thresh:进行分类的阈值。

maxval:是高于(低于)阈值时赋予的新值。

type:选择的方法,具体定义如下:

 下面是实现代码(ppt上findContours返回值应该是三个,少了图像值):

import cv2 as cv
import matplotlib.pyplot as plt
import copy

filename="d:/Rice.png"
image = cv.imread(filename)
gray=cv.cvtColor(image, cv.COLOR_BGR2GRAY)
#使用大津算法灰度阈值化
thr,bw = cv.threshold(gray, 0, 0xff, cv.THRESH_OTSU)
print("threshold is ", thr)

#画出灰度直方图
plt.hist(gray.ravel(), 256, [0,256])
plt.show()

#预处理-形态学开运算
element = cv.getStructuringElement(cv.MORPH_CROSS, (3,3))
bw = cv.morphologyEx(bw, cv.MORPH_OPEN, element)
#拷贝一份
seg = copy.deepcopy(bw)
#计算轮廓
final, cnts, hier = cv.findContours(seg, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
count = 0
#遍历所有区域,并去除面积过小的
for i in range(len(cnts), 0, -1):
    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)
    cv.rectangle(image, (x,y), (x+w, y+h), (0,0,0xff), 1)
    cv.putText(image, str(count), (x,y), cv.FONT_HERSHEY_PLAIN, 0.5, (0, 0xff, 0))
print("米粒数量:", count)
cv.imshow("原图", image)
cv.imshow("阈值化图", bw)
cv.waitKey()
cv.destroyAllWindows()

结果如图:

发布了65 篇原创文章 · 获赞 34 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/huanggang982/article/details/104956661
今日推荐