最近发现一个opencv的trick,记录一下
cv2读取灰度视频
cap = cv2.VideoCapture(video_name)
while True:
status, data = cap.read()
if not status:
break
cv2.resize(data,(nw, nh))
cv2.imwrite(img_path, data)
cap.release()
注意读取灰度视频时,data.shape=(h,w,3),色彩维度是三组相同的数字,但是在resize和imwirte等opencv操作的时候,是能够直接识别其为灰度图
,但是进行数组操作时,需要考虑channel维度
cv2写出灰度视频
注意videoWriter中的参数配置isColor=False
便可以实现对灰度图像的写出操作。默认是True,如果输入是灰度图,虽然在写出的时候不会报错,但是写出视频无内容。
videoWriter (filename, fourcc, fps, frameSize, isColor=False)
图片质量
由于常见的图片格式,比如jpg, png等都是编码压缩后的数据,因此可以采用不同的压缩率对图片进行编码和解码,就可以得到不同大小的相同分辨率的图像
。
cv2.imwrite(paths, out, [int( cv2.IMWRITE_JPEG_QUALITY), 70])
cv2.CV_IMWRITE_JPEG_QUALITY
cv2.CV_IMWRITE_WEBP_QUALITY
cv2.CV_IMWRITE_PNG_COMPRESSION
其值为0—100(数值越大质量越高),默认95