63 lines
2.2 KiB
Python
63 lines
2.2 KiB
Python
# 视频帧操作函数
|
||
# 创建人:曾逸夫
|
||
# 创建时间:2022-01-04
|
||
|
||
import cv2
|
||
import sys
|
||
|
||
|
||
# 帧保存
|
||
def frame_opt(frame,
|
||
frame_savePath,
|
||
frame_num,
|
||
is_resizeFrame,
|
||
resize_frame,
|
||
resizeRatio_frame,
|
||
frame_namePrefix,
|
||
frame_saveStyle,
|
||
jpg_quality,
|
||
png_quality):
|
||
|
||
# 判断图片质量范围
|
||
if (jpg_quality < 0 or jpg_quality > 100):
|
||
print(f'JPG质量系数超出范围!无法保存!')
|
||
sys.exit() # 结束程序
|
||
|
||
if (png_quality < 0 or png_quality > 9):
|
||
print(f'PNG质量系数超出范围!无法保存!')
|
||
sys.exit() # 结束程序
|
||
|
||
if (is_resizeFrame):
|
||
# 重塑视频帧尺寸
|
||
w_resize = int(
|
||
resize_frame[0] * resizeRatio_frame) # 重塑宽度
|
||
h_resize = int(
|
||
resize_frame[1] * resizeRatio_frame) # 重塑高度
|
||
frame_new = cv2.resize(
|
||
frame, (w_resize, h_resize), interpolation=cv2.INTER_AREA) # 重塑
|
||
|
||
if (frame_saveStyle == 'jpg'):
|
||
cv2.imwrite(
|
||
f'./{frame_savePath}/{frame_namePrefix}-{frame_num}.{frame_saveStyle}', frame_new,
|
||
[int(cv2.IMWRITE_JPEG_QUALITY), jpg_quality])
|
||
elif (frame_saveStyle == 'png'):
|
||
cv2.imwrite(
|
||
f'./{frame_savePath}/{frame_namePrefix}-{frame_num}.{frame_saveStyle}', frame_new,
|
||
[int(cv2.IMWRITE_PNG_COMPRESSION), png_quality])
|
||
else:
|
||
print(f'帧格式有问题!无法保存!')
|
||
sys.exit() # 结束程序
|
||
|
||
else:
|
||
if (frame_saveStyle == 'jpg'):
|
||
cv2.imwrite(
|
||
f'./{frame_savePath}/{frame_namePrefix}-{frame_num}.{frame_saveStyle}', frame,
|
||
[int(cv2.IMWRITE_JPEG_QUALITY), jpg_quality])
|
||
elif (frame_saveStyle == 'png'):
|
||
cv2.imwrite(
|
||
f'./{frame_savePath}/{frame_namePrefix}-{frame_num}.{frame_saveStyle}', frame,
|
||
[int(cv2.IMWRITE_PNG_COMPRESSION), png_quality])
|
||
else:
|
||
print(f'帧格式有问题!无法保存!')
|
||
sys.exit() # 结束程序
|