Python-OpenCV
[toc]
0、资料
1、OpenCV 环境的搭建
环境:
- Python 3.6
- (Anaconda)Jupyter NoteBook
- opencv-python(
pip install opencv-python==3.4.1.15
)【最新版有部分算法不开源】- 进入python的交互模式,检查是否安装opencv的库:
-
import cv2
-
cv2.__version__
-
exit()
-
- 进入python的交互模式,检查是否安装opencv的库:
- opencv-contrib–python(
pip install opencv-contrib-python==3.4.1.15
)【版本需一致】
启动 Jypyter NotaBook
前提:安装完 Anaconda
启动软件:cmd中输入
jupyter notebook
打开界面:浏览器输入
http://localhost:8888/
新建 1个Python文件,运行( shift + Enter )
上传文件
2、计算机眼中的图像
计算机中的图像是由像素构成的。
像素点:取值(表示亮度)为(0~255 ,其中 0 为黑色,255 为白色 )。
RGB:图像的颜色通道(3 通道)。
黑白图:只有1个通道。
2.1 读取图像
图像色彩:
-
cv2.IMREAD_COLOR
:彩色图像 -
cv2.IMREAD_GRAYSCALE
:灰色图像
图像显示:
-
%matplotlib inline
:在 notebook 中直接展示图片,无需调用plt.show()
图像 读、写
- 读取:
cv2.imread("图片名")
- 写入:
cv2.imwrite("图片名",已读取的图片)
图片的常用属性
- 底层格式:
type(img1)
- 像素点的个数:
img.size
- 数据类型:
img.dtype
模板:
1 | import cv2 # 默认读取的是BGR(而不是 RGB) |
读取图片-案例:
1 | import cv2 |
将读取图片的代码封装为函数
1 | import cv2 |
读取灰度图
1 | import cv2 |
写入灰度图
1 | import cv2 |
2.2 读取视频
-
cv2.videoCapture("视频名")
模板
1 | import cv2 |
2.3 ROI 截取图像
1 | import cv2 |
2.4 提取、合并颜色通道 BGR
1 | import cv2 |
只保留一个通道
1 | import cv2 |
2.5 边界填充
cv2.copyMakeBorder(图片,上填充,下填充,左填充,右填充,borderType=cv2.BORDER_REPLICATE)
borderType
属性的取值:-
cv2.BORDER_REPLICATE
:replicate,复制边缘像素 -
cv2.BORDER_REPFLECT
:reflect,反射(可能有重复) -
cv2.BORDER_REPFLECT_101
:reflect,反射(不重复) -
cv2.BORDER_WRAP
:wrap,包裹边缘 -
BORDER_CONSTANT
:constant,配合value属性使用
-
1 | import cv2 |
2.6 图像融合
将2张图片合为一张图片
1 | import cv2 |
2.7 图像阈值
res,dst = cv2.threshold( 原单通道灰度图,阈值127,最大阈值255,类型)
参数-“类型”的取值(用于与==参数-最大阈值==结合起来使用):
-
cv2.THRESH_BINARY
:超过部分取才最大阈值,否则取0【亮的像素全白,暗的像素全黑】 -
cv2.THRESH_BINARY_INV
:反转【亮的像素全黑,暗的像素全白】 -
cv2.THRESH_TRUNC
:截断,亮度大于阈值的部分才设置,亮度小于的部分不变 -
cv2.THRESH_TOZERO
:大于阈值的部分不变,小于阈值的部分取0(小于阈值的部分,其像素为黑) -
cv2.THRESH_TOZERO_INV
:反转(大于阈值的部分,其像素为黑)
1 | import cv2 |
3、图像平滑处理
图像平滑处理 也就是对图像进行滤波操作。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cyw的笔记栈!