10、OpenCV Python 图像二值化
2024-10-19 02:20:26
__author__ = "WSX"
import cv2 as cv
import numpy as np
#-----------二值化(黑0和白 255)-------------
#二值化的方法(全局阈值 局部阈值(自适应阈值))
# OTSU
#cv.THRESH_BINARY 二值化
#cv.THRESH_BINARY_INV(黑白调换)
#cv.THRES_TRUNC 截断 def threshold(img): #全局阈值
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY) #首先变为灰度图
ret , binary = cv.threshold( gray , 0, 255 , cv.THRESH_BINARY |cv.THRESH_OTSU)#cv.THRESH_BINARY |cv.THRESH_OTSU 根据THRESH_OTSU阈值进行二值化 cv.THRESH_BINARY_INV(黑白调换)
#上面的0 为阈值 ,当cv.THRESH_OTSU 不设置则 0 生效
#ret 阈值 , binary二值化图像
print("阈值:", ret)
cv.imshow("binary", binary) def own_threshold(img): #自己设置阈值100 全局
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY) #首先变为灰度图
ret , binary = cv.threshold( gray , 100, 255 , cv.THRESH_BINARY )#cv.THRESH_BINARY |cv.THRESH_OTSU 根据THRESH_OTSU阈值进行二值化
#上面的0 为阈值 ,当cv.THRESH_OTSU 不设置则 0 生效
#ret 阈值 , binary二值化图像
print("阈值:", ret)
cv.imshow("binary", binary) def local_threshold(img): #局部阈值
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY) #首先变为灰度图
binary = cv.adaptiveThreshold( gray ,255 , cv.ADAPTIVE_THRESH_GAUSSIAN_C , cv.THRESH_BINARY, 25 , 10,)#255 最大值
#上面的 有两种方法ADAPTIVE_THRESH_GAUSSIAN_C (带权重的均值)和ADAPTIVE_THRESH_MEAN_C(和均值比较)
#blockSize 必须为奇数 ,c为常量(每个像素块均值 和均值比较 大的多余c。。。少于c)
#ret 阈值 , binary二值化图像
cv.imshow("binary", binary) def custom_threshold(img): #自己计算均值二值化
gray = cv.cvtColor(img , cv.COLOR_BGR2GRAY) #首先变为灰度图
h ,w = gray.shape[:2]
m = np.reshape( gray ,[1 ,w+h])
mean = m.sum() / w*h #求出均值
binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY )
cv.imshow("binary", binary) def main():
img = cv.imread("1.JPG")
cv.namedWindow("Show", cv.WINDOW_AUTOSIZE)
cv.imshow("Show", img)
#own_threshold(img)
own_threshold(img)
cv.waitKey(0)
cv.destroyAllWindows() main()
最新文章
- 读取xml文件报错:Invalid byte 2 of 2-byte UTF-8 sequence。
- Android基于mAppWidget实现手绘地图(八)–获取用户地理位置
- Theano2.1.12-基础知识之使用GPU
- PHP判断用户操作系统(Android,ipad,iphone,windows)
- [leetCode][001] Maximum Product Subarray
- Qt之Timers
- 第三百二十九天 how can I 坚持
- ACM竞赛 Java编程小结
- 查看Oracle执行计划的几种方法
- java实现字符串匹配问题之求两个字符串的最大公共子串
- popoverController(iPad)
- 无法删除MySql数据库,报错1010 error dropping
- 安卓模拟器tools修改
- 201521123122 《java程序设计》第八周实验总结
- Node.js 模块系统
- Activiti初学问题,求解
- Python_二叉树
- Asp.Net MVC Https设置
- 01c语言基础
- word用宏命令完美解决列表编号变黑块的问题