2、OpenCV 的基本操作

您当前位置: 首页 > Pi-motion视觉云台 > 3、课程讲解

basic_writeAndRead.zip  点击下载

draw.zip  点击下载

trackbar.zip  点击下载

1.1 读入、显示和保存图像    

注意:运行本次课程的程序时一定要有桌面用于显示图片,建议大家使用VNC登录进入系统,这样图片就可以显示出来。

1.图像的读入:

img = cv2.imread('tankCar.jpg', 0) 

第一个参数是图片的路径,第二个参数是如何读取这幅图片

cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数。cv2.IMREAD_GRAYSCALE: 以灰度模式读入图像

     

2.图像的显示:

cv2.imshow(‘image’,img)

第一个参数是窗口的名字,窗口会自动调整为图像的大小,

第二个参数是显示图像的句柄 但是在程序执行的过程中窗口会一闪而过,需要添加以下语句:       

cv2.waitKey(0): 键盘绑定程序,等待键盘输入。

cv2.destroyAllWindows(): 删除我们建立的任何窗口

cv2.destroyWindow(‘image’): 删除指定的窗口名


3.图像的保存:

cv2.imwrite(‘car.jpg’, img)

第一个参数是保存的文件名,

第二个参数是保存的图像


4.图像的读取显示保存综合:

下方程序会加载一幅彩图并显示图片,键盘按下‘s’键保存图像并退出,或者按下‘ESC’键退出但不保存。程序的源码位于/home/pi/yahboom/basic_writeAndRead/basic_writeAndRead.py

源程序如下:

image.png

程序运行之后,我们可以看到树莓派系统桌面显示图片,如下图所示。

image.png

然后我们按一下键盘上的S键保存图片,同时我们可以看到Jupyter lab上面提示“save image successfully”.

image.png

1.2 读入、显示和保存视频

学习视频的读取,显示和保存视频。函数为 cv2.VideoCapture()和 cv2.VideoWrite()

从摄像头获取视频流:

打开摄像头:

cap = cv2.VideoCapture(0)

参数 0 表示设备的默认摄像头,当设备有多个摄像头时可以改变参数选择 读取摄像头的视频流:ret, frame = cap.read() 无参数,但需放在死循环中不断读取形成视频 释放摄像头资源:cap.release() 无参数,程序关闭之前务必关闭摄像头,释放资源。

读取视频文件:

cap = cv2.VideoCapture(‘filename’)

其他同上

保存视频:

创建一个 VideoWriter 对象,并指定输出文件名,指定视频编码格式 指定编码格式:fourcc = cv2.VideoWriter_fourcc(*’XVID’) 指定输出文件:

out = cv2.VideoWriter(‘output.avi’,fourcc,20.0,(640,480))    

最后一个参数为视频的分辩率

视频读取显示保存综合: 获取摄像头的视频流并保存在当前文件夹下

1.3 绘制直线、矩形、圆

学习使用 OpenCV 绘制不同的几何图形,相关函数为 cv2.line(), cv2.circle(), cv2.rectangle(), cv2.putText()等。

绘制直线:

cv2.line(img, startPoint, endPoint, color, thickness)

绘制圆:

cv2.circle(img, centerPoint, radius, color, thickness) thickness 是负数是表示圆被填充                                         

绘制矩形:

cv2.rectangle(img, point1, point2, color, thickness)

point1 为左上顶点,point2 为 point1 对角线上的另一个顶点

书写文本:

cv2.putText( img, text, point, font, size, color, thickness )                   

text 为要写的文本,point 为第一个字符的左下坐标,font 为字体类型,size 为字体大小 综合:在一幅图片上画线,画圆,画矩形和文字。

程序的源码位于/home/pi/yahboom/draw/draw.pyimage.png 

程序运行效果如下:

image.png

1.4 OpenCV把鼠标当画笔/调色板

学习将滑动条绑定到窗口,实现动态调整某些参数。学习 cv2.getTrackbarPos()和cv2.createTrackbar()两个函数。

创建滑动条:cv2.createTrackbar(name,window, min, max, callback)

第一个参数是滑动条的名字,第二个参数是滑动条存在的窗口,第三和第四个参数是滑 动条的取值范围,第五个是回调函数。

获取滑动条的值:cv2.getTrackbarPos(name, window)

第一个参数是滑动条的名字,第二个参数是滑动条存在的窗口Demo:改变 RGB 值,实现一个调色板。

程序如下,程序的源码位于/home/pi/yahboom/trackbar/trackbar.py

image.png 

程序运行效果如下:

image.png

我们可以随意拖动滚动条,显示不同的颜色,如下图所示。

image.png 

然后我们按一下键盘上的“S”键或者“ECS”退出该进程。