最近继续学习了 python opencv 图像二值化处理的方法。
同时做了 h5 版本的,如上图。可以随时预览,分享一下,希望多少有些帮助吧。
点击在线体验
目前只是个Demo,后面会逐步完善的 :)
.
完整代码
import cv2
# 读取图片。
img = cv2.imread("007.jpeg");
# 转成灰度图片
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY);
# 二值化
ret,img=cv2.threshold(img, 127, 255, cv2.THRESH_BINARY);
# 显示图像
cv2.imshow("title", img);
# 进程不结束,一直保持显示状态
cv2.waitKey(0);
#销毁所有窗口
cv2.destroyAllWindows();
.
图像二值化
一般可以简单理解,就是把图像转换成黑白两种颜色。(提取图像特征)
实现步骤
1)转成灰色图片(一般在图像二值化前,需要对图像进行灰度处理)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY);
参数 | 值 | 说明 |
---|---|---|
参数1 | img | 需要处理的图片 |
参数2 | cv2.COLOR_BGR2GRAY | 转换类型 |
常用的基本转换类型
cv2.COLOR_BGR2BGRA = 0
cv2.COLOR_BGRA2BGR = 1
cv2.COLOR_BGR2RGBA = 2
cv2.COLOR_RGBA2BGR = 3
cv2.COLOR_BGR2RGB = 4
cv2.COLOR_BGRA2RGBA = 5
cv2.COLOR_BGR2GRAY = 6
cv2.COLOR_RGB2GRAY = 7
cv2.COLOR_GRAY2BGR = 8
cv2.COLOR_GRAY2BGRA = 9
cv2.COLOR_BGRA2GRAY = 10
cv2.COLOR_RGBA2GRAY = 11
(主要是彩色图片RGB BGR格式与灰色图片相互转换)
.
2)进行二值化
ret,img=cv2.threshold(img, 127, 255, cv2.THRESH_BINARY);
参数 | 值 | 说明 |
---|---|---|
参数1 | img | 需要处理的图片 |
参数2 | 127 | 阀值(0-255)与图像像素值进行对比 |
参数3 | 255 | 默认赋值(根据阀值和像素对比,决定是否赋值为该值) |
参数4 | cv2.THRESH_BINARY | 阀值类型 |
常用的阀值类型
cv2.THRESH_BINARY 当像素值 > 阀值时,为默认值;否则为 0
cv2.THRESH_BINARY_INV 与 cv2.THRESH_BINARY 相反
cv2.THRESH_TRUNC 当像素值 > 阀值时,为默认值;否则为原图片值
cv2.THRESH_TOZERO 当像素值 > 阀值时,为原图片值;否则为 0
cv2.THRESH_TOZERO_INV 与 cv2.THRESH_TOZERO 相反
.
一些实现的效果
最后分享一些二值化后的效果