Opencv二值化操作
图像的二值化就是将图像上的每个像素点的灰度值设置为0或者255,也就是将整个图像呈现出明显的黑白效果。
1.导入 cv2模块
import cv2 #导入cv2模块
2.读取图片
img = cv2.imread("img.png")#读取图片
括号里写的是图片所在路径,可以根据你需要读取的图片的路径填写
3.灰度化图像
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#图像灰度化
在进行二值化操作之前需要将图片先转为单通道模式,灰度化可以完成这一步骤,可以print(img.shape)函数获取图像的通道模式
4.二值化操作
ret, thresh = cv2.threshold(gray_img, 10, 255, cv2.THRESH_BINARY)#黑白二值化,就是将一个图片变成要么是白色要么是黑色
我们使用threshold()函数对图像进行二值化 该函数有两个返回值
- ret:得到的是阈值值 2. thresh:得到的是二值化后的图像
threshold(src,thresh,maxvalue,type)方法有四个参数:
1.输入图像
2.阈值
3.图片中的最大值
4.二值化的方式
二值化的方式: - THRESH_BINARY (高于阈值改为255,低于阈值改为0)
- THRESHBINARYINV (高于阈值改为0,低于阈值改为255)
- THRESH_TRUNC (截断,高于阈值改为阈值,最大值失效)
- THRESH_TOZERO (高于阈值不改变,低于阈值改为0)
- THRESHTOZEROINV (高于阈值改为0,低于阈值不改变)
5.图像显示
cv2.imshow('threshold',thresh)
cv2.waitKey(0)
cv2.imwrite('image_thres1.jpg', thresh)#图像保存 图
cv2.destroyAllWindows()
完整代码:
import cv2
img = cv2.imread('sekuai.png')
imgray = cv2.cvtColor(img, cv2.COLORBGR2GRAY)
ret, thresh = cv2.threshold(imgray, 200, 255,cv2.THRESHBINARY) cv2.imshow('threshold',thresh)
cv2.imshow('threshold',thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()