读取和显示图像
- cv2.imread():读取
- cv2.imwrite():写入
- cv2.imshow():显示
1 | img = cv2.imread(img_path, 0) |
视频的操作
从摄像头读取视频
- cv2.VideoCapture(0).read()
- cv2.cvtColor()
- cv2.imshow()
- cap.get(propId)
1 | def create_video(): |
从文件中获取视频
cv2.VideoCapture(0)表示打开默认设备,将设备索引号改成视频文件的名称就能从视频文件中读取视频,使用 waitKey()控制播放速度(通常25 ms)。
OpenCV 中的绘图函数
学会以下函数的使用:
- cv2.line()
- cv2.circle()
- cv2.rectangle()
- cv2.ellipse()
- cv2.putText()
参数:上面所有的绘图函数都需要的参数:
- img :画布
- color : 指定的颜色,RGB->(255, 255, 0)
- linetype : 线条的类型,8连接,抗锯齿等。lineType=cv2.LINE_AA(抗锯齿)。
画线
画一条直线需要指定直线的起点和终点:
1 | def draw_line2(): |
画矩形
绘制矩形需要指定两个点的坐标:
1 | def draw_rectangle(): |
画圆
绘制圆形需要指定圆心坐标和半径大小:
1 | def draw_circle(): |
画椭圆
绘制椭圆需要指定的参数:
- 中心点坐标
- 长轴和短轴
- 沿逆时针方向旋转的角度
- 顺时针方向起始角度和结束角度
1 | def draw_ellipse(): |
在图片中添加文字
所需参数:
- 添加的文本
- 绘制的位置
- 字体类型
- 字体大小
- 文字的一般属性(颜色,粗细,线条类型等)
1 | def put_text(): |
简单的鼠标事件
- 学习使用 OpenCV 处理鼠标事件
- 函数:cv2.setMouseCallback()
简单示例
鼠标事件可以获得事件对应的坐标和事件名称。
1 | def draw_circle(event, x, y, flags, params): |
用滑动条做调色板
学习目标:
- 学会把滑动条绑定到 OpenCV 的窗口
- cv2.getTrackbarPos()
- cv2.createTrackbar()
代码示例
1 | #!/usr/bin/env python |
习题
创建一个画板,可以选择各种颜色的画笔进行绘画操作。
代码:
1 | def draw_circle(event, x, y, flag, params): |
核心操作
图像的基础操作
学习目标:
- 获取像素的值并修改
- 获取图像的属性(信息)
- 图像的 ROI()
- 图像通道的拆分与合并
获取图像的像素
1 | img = cv2.imread("/Users/youyou2608/Pictures/pi.png") |
图像的 ROI
有时对图像的某一特定区域进行搜索比在一张图像中搜索有更高的准确性和性能。
1 | img = cv2.imread("/Users/youyou2608/Pictures/pi.png") |
拆分及合并图像通道
对 BGR 三个通道分别进行操作。
1 | # 将图片所有共色通道值都设置为0 |
图像上的算术运算
- 学习图像上的加法、减法和位运算等
- cv2.add()
- cv2.addWeighted()
加法
进行加法的两幅图像的大小、类型必须一致。
1 | x = np.uint([250]) |
图像混合
图像混合其实也是加法,但是不同的是两幅图像的权重不同。
函数:cv2.addWeighted()
1 | img1 = cv2.read("img1.png") |
后续…