一、图像入门
cv.nameWindow(winname,flags)
winname:窗口的名称,用于进行窗口的标识,每个窗口具有唯一的名称
flags:可选参数,用于指定窗口的行为
cv.WINDOW_NORMAL:允许调整窗口的大小
cv.WINDOW_AUTOSIZE:根据图像自动调整窗口的大小
cv.imwrite(imagename,img)
图像会以png格式保存在工作目录中
cv.waitKey(t)
是一个键盘绑定方式,等待键盘输入,参数为等待的时间,单位为毫秒
常见的用法是传入0表示无线地等待键盘输入
key=cv.waitKey(0)
如果有按键则返回该键的ASCII码值
如果没有按键则返回-1
ord(char):接受一个字符作为参数并返回对应的ASCII码值
chr(ascii):接受一个代表ASCII码的整数作为参数并返回对应的字符
plt.imshow(img,cmap,aspect,interpolation)
img:要显示的图像,可以是一个二维/三维数组
cmap:可选参数,用于指定颜色的映射,指定如何将数组的值映射到颜色
cmap='gray':灰度图
cmap='hot':热度图
aspect:可选参数,用于指定图像的长宽比,默认情况下会根据图像的尺寸自动调整比例
interpolation:可选参数,用于指定图像的插值方法
cap=cv.VideoCapture(source)
source可以是以下几种类型
(1)整数:表示连接到计算机的摄像头的索引号码(通常0表示默认设备)
(2)字符串:表示视频文件的路径
(3)URL:表示IP的摄像头URL
可以将cap对象看成一个视频捕获器
cap.isOpened()
返回布尔值用于判断视频源是否成功打开
cap.open()
打开视频源
read()
用于读取视频源中的下一帧
return ret,frame
ret:表示是否成功读取到帧
frame:帧对象包含了当前帧的图像数据(帧是一个图像)
gray=cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
将图像从一个颜色空间转换到另一个颜色空间
cv.COLOR_BGR2GRAY
BGR:blue,green,red
cap.release()
释放视频资源,不再占用相机/文件之类的系统资源
FourCC(四字符编码)是一个由四个字节(通常是ASCII)组成的序列,用于唯一标识数据格式
fourcc=cv.VideoWriter_fourcc(*'XVID')
创建了一个使用Xvid编码器的视频编码器fourcc
视频编码器:将视频的原始图像帧数据进行压缩和编码,以生成可存储和传输的视频文件。它负责将连续的图像帧转换为视频压缩格式,以减小文件大小并提高传输效率
out=cv.VideoWriter(videoname,coder,frame_rate,(像素高,像素宽))
VideoWriter的对象可以看成一个视频生成器
帧率(frame rate):每秒播放的帧数
分辨率:用于描述图像/视频的清晰度和细节水平,表示图像/视频水平和垂直方向上像素的数量
分辨率=视频宽度(像素宽)*视频高度(像素高)
out.write(frame)
cv.flip(frame,0)
用于翻转图像/视频帧的函数
frame:要翻转的图像帧
num:指定反转方式的标志
0:垂直翻转
1:水平翻转
-1:水平垂直同时翻转
cv.ROTATE_90_COUNTERLOCKWISE:逆时针90度
cv.ROTATE_90_LOCKWISE:顺时针90度
绘图
np.zeros(tuple):用于创建一个指定大小的数组,并将其填充为指定的值
tuple:元组用于指定数组的形状
cv.line(img,pt1,pt2,color,thickness,lineType,shift)
img:要于其上进行绘制的图像
p1,p2为线段的起终点
color:用BGR颜色表示
BGR是一种常见的颜色编码方式
thickness:宽度,以像素为单位,默认值为1
lineType:线条的类型
shift:像素坐标的小数数位,默认值为0
cv.rectangle()
p1,p2为矩形的左上角和右下角
cv.circle(img,center,radius,BGRcolor,thickness,lineType,shift)
thickness:圆的边框线条宽度
正值:实心圆
负值:表示圆框线条宽度
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)
axes:(a,b)椭圆的长轴和短轴宽度
angle:椭圆的旋转角度
startAngle:椭圆的起始角度
cv.polylines(img, pts, isClosed, color, thickness, lineType, shift)
pts:多边形顶点的坐标,作为一个数组传递
isClosed:传递一个布尔值指定多边形是否闭合
cv.putText(img, text, org, fontFace, fontScale, color, thickness, lineType, bottomLeftOrigin)
org:文本的起始坐标
fontFace:字体类型
cv.FONT_HERSHEY_SIMPLEX
cv.FONT_HERSHEY_PLAIN
cv.FONT_HERSHEY_DUPLEX
fontScale:字体的缩放比例
bottomLeftOrigin: 一个布尔值,表示坐标原点是否位于文本框的左下角。默认情况下,它为False,表示坐标原点位于文本框的左上角
用鼠标作为画笔
dir():用于列出当前作用域中定义的变量/函数/模块的名称
设置鼠标回调函数的方法
cv.setMouseCallback(windowName, onMouse[, param])
windowName:指定回调函数要应用于哪个窗口
onMouse:回调函数,用于处理鼠标事件
鼠标回调函数:函数在发生鼠标事件时执行
def onMouse(event,x,y,flags,param):
event:表示当前触发的鼠标事件
捕获
x:鼠标事件发生的x坐标
y:鼠标事件发生的y坐标
鼠标事件发生的坐标:鼠标在图像或窗口中相对于左上角的位置
flags:额外的标志参数,提供关于鼠标事件的其他信息
param:回调函数的额外参数