OpenCV这么简单为啥不学——1.8、threshold阈值0-4效果对照图
前言
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
1、研究代码(慢,不稳定,独立并与其他库不兼容)
2、耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。
故而我们选择学习OpenCV,我们来一步步的学习OpenCV。
cv2.threshold
语法:
cv2.threshold (src, thresh, maxval, type)
参数:
- src:源图片,必须是单通道
- thresh:阈值,取值范围0~255
- maxval:填充色,取值范围0~255
- type:阈值类型,有表数据
阈值对照表
阈值 | 小于阈值的像素点 | 大于阈值的像素点 |
0 | 置0 | 置填充色 |
1 | 置填充色 | 置0 |
2 | 保持原色 | 置灰色 |
3 | 置0 | 保持原色 |
4 | 保持原色 | 置0 |
效果对照
阈值0
小于阈值的像素点置0,大于阈值的像素点置填充色
阈值1
小于阈值的像素点置填充色,大于阈值的像素点置0
阈值2
小于阈值的像素点保持原色,大于阈值的像素点置灰色
阈值3
小于阈值的像素点置0,大于阈值的像素点保持原色
阈值4
小于阈值的像素点保持原色,大于阈值的像素点置0
生成示例循环代码
import shutil import os import cv2 import numpy as np fileName = '800_600.jpg' # 新建文件夹,用于存放新生成的阈值图片 save_dir = 'main_img/' try: # 递归删除文件夹 shutil.rmtree(save_dir) except OSError: pass # 创建 os.makedirs(save_dir) # 单通道图片 img = cv2.imread(fileName) imGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 生成0~4的对照图片 for type in range(0, 5, 1): _, thresh = cv2.threshold(src=imGray, thresh=150, maxval=100, type=type) concat_pic = np.concatenate([imGray, thresh], axis=1) cv2.imwrite('{0}type={1}.jpg'.format(save_dir, type), concat_pic)