Python-OpenCV基础篇学习笔记(3)

Python-OpenCV基础篇学习笔记之三

  • 保存图像
    • cv2.imwrite(filename, img, params)
  • 视频的保存
    • cv2.VideoWriter(filename, fourcc, fps, frameSize, isColor=true)

在图像的处理过程中我们会获得一些新的图像,其中一些处理过后的图片会对我们的参数调整和算法应用提供一些参考价值,并且处理过后的最终图片我们需要保存为图像文件或者视频文件

保存图像

OpenCV提供了cv2.imwrite()函数用于将Mat数组对象保存为图像,该函数的原型如下所示:

cv2.imwrite(filename, img, params)

filename:保存图像的地址和文件名,包含图像格式
img:将要保存的Mat类型的矩阵变量
params:保存图片格式属性设置标志
另外该函数成功保存图像的时候返回true,保存失败时返回false。
我们可以通过修改params参数来改变图像的保存格式,不同的数据类型可以保存的格式如下:

  • 数据类型为uint16的图像可以保存为PNG、JPEG、TIFF格式文件。
  • 数据类型为float32的图像可以保存为PFM、TIFF、OpenEXR和Radiance HDR格式文件。
  • 四通道(最后一个为alpha通道)的图像可以保存为PNG格式文件。其中,对于完全透明的像素,设置alpha0;对于完全不透明像素,设置alpha255/6535

不过该函数的第三参数一般情况下不需要填写,在保存文件的时候只需要将文件名的后缀写成我们想要保存的文件格式即可。
先看原图如下,之后我们将对他进行颜色空间变换后进行保存。
Python-OpenCV基础篇学习笔记(3)_第1张图片

import cv2
img = cv2.imread(r'R-C.jpg')
img_rbg = cv2.cvtColor(img, 4, 0)  # 颜色空间变换
cv2.namedWindow('imgWindow', cv2.WINDOW_NORMAL)
cv2.imshow('imgWindow', img_rbg)
cv2.waitKey(0)
cv2.imwrite('img_rbg.jpg', img_rbg)  # 保存图像

让我们来看储存效果
Python-OpenCV基础篇学习笔记(3)_第2张图片
打开图片观察是否进行过颜色颜色空间转换
Python-OpenCV基础篇学习笔记(3)_第3张图片
这里我们成功将处理过后的图片进行了保存。

视频的保存

OpenCV提供了cv2.VideoWriter()函数用于将Mat数组对象保存为图像,该函数的原型如下所示:

cv2.VideoWriter(filename, fourcc, fps, frameSize, isColor=true)

filename:保存视频文件的地址和文件名,包含视频格式。
fourcc:压缩帧的4字符编码器代码
fps:保存视频的帧率,即视频中每秒图像的张数。
frameSize:视频帧的尺寸。注意,设置时需和图像的尺寸相同,不然无法保存成功。
isColor:保存视频是否为色彩视频。

对于fourcc参数我在下表中罗列出我们可以设置的编/译码器选项。

编/译码器选项(写法一) 编/译码器选项(写法二) 含义
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘X’) cv2.VideoWriter_fourcc(*‘DIVX’) MPED-4编码
cv2.VideoWriter_fourcc(‘P’, ‘I’, ‘M’, ‘1’) cv2.VideoWriter_fourcc(*‘PIM1’) MPED-1编码
cv2.VideoWriter_fourcc(‘M’, ‘J’, ‘P’, ‘G’) cv2.VideoWriter_fourcc(*‘MJPG’) JPEG编码(效果一般)
cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘2’) cv2.VideoWriter_fourcc(*‘MP42’) MPED-4.2编码
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘3’) cv2.VideoWriter_fourcc(*‘DIV3’) MPED-4.3编码
cv2.VideoWriter_fourcc(‘U’, ‘2’, ‘6’, ‘3’) cv2.VideoWriter_fourcc(*‘U263’) H.263编码
cv2.VideoWriter_fourcc(‘I’, ‘2’, ‘6’, ‘3’) cv2.VideoWriter_fourcc(*‘I263’) H.263I编码
cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’) cv2.VideoWriter_fourcc(*‘FLV1’) FLV1编码

不多说,上代码

cap = cv2.VideoCapture(0)
result = cv2.VideoWriter('cap.mp4', -1, 30, (640, 480))
while True:
    ret, frame = cap.read()  # 读取图像并显示
    if ret:
        result.write(frame)
        cv2.imshow('frame', frame)
        if cv2.waitKey(1) & 0xff == ord('q'):  # 按q退出
            break
    else:
        break
cap.release()
result.release()
cv2.destroyAllWindows()

这里我们调用摄像头资源并将摄像头捕捉的每一张图片写入了cap.mp4文件中。看看保存结果。
Python-OpenCV基础篇学习笔记(3)_第4张图片
结果是成功保存了。

你可能感兴趣的:(opencv,python,学习)