25 lines
1.4 KiB
Python
25 lines
1.4 KiB
Python
# 阈值分割;
|
|
# 1、确定分割的目标:首先需要明确要分割的目标是什么,例如分割目标物体和背景。
|
|
# 2、确定阈值:根据图像的特点和需求,选择适当的阈值。阈值可以是一个固定的值,也可以根据图像的统计特性进行自适应选择。
|
|
# 3、将图像转换为灰度图像:如果图像不是灰度图像,需要将其转换为灰度图像。这可以通过将彩色图像的RGB通道进行加权平均得到灰度值。
|
|
# 4、应用阈值:将选择的阈值应用于灰度图像,将图像中的像素分成两个类别:低于阈值的像素和高于阈值的像素。
|
|
# 5、生成二值图像:根据阈值的应用结果,将低于阈值的像素设置为一个固定的值(例如0),将高于阈值的像素设置为另一个固定的值(例如255),从而生成二值图像。
|
|
# 6、后处理(可选):根据实际需求,可以对生成的二值图像进行后处理操作,例如去除噪声、填充空洞等。
|
|
|
|
import numpy as np
|
|
import cv2 as cv
|
|
|
|
img=cv.imread('test1.png',cv.IMREAD_GRAYSCALE)
|
|
cv.imshow('img',img)
|
|
|
|
threshold_value = 200
|
|
max_value = 255
|
|
_,binary_img = cv.threshold(img,threshold_value,max_value,cv.THRESH_BINARY)
|
|
cv.imshow('binary_img',binary_img)
|
|
|
|
kernel = np.ones((3,3),np.uint8)
|
|
cleaned_img=cv.morphologyEx(binary_img,cv.MORPH_OPEN,kernel)
|
|
cv.imshow('cleaned_img',cleaned_img)
|
|
|
|
cv.waitKey(0)
|
|
cv.destroyAllWindows() |