在python中使用open cv提取n个图像的多个

数据挖掘 Python
2022-01-31 00:02:24

我在python中使用opencv模块从视频(从文件)中提取图像序列(帧)我从视频中提取图像的代码是这样的。

import cv2     
import os
os.chdir('D:/Python images/videofolder') 
cap = cv2.VideoCapture('D:/Python images/test_videos/testcutvideo1.avi')
cap.isOpened()
success,image = cap.read()
count = 1
success = True
while success:
     success,image = cap.read()
     cv2.imwrite("image%d.jpg" % count, image)     # save frame as JPEG file
count += 1

我希望我的代码选择多个“n”图像,例如:选择并保存 5 个图像的多个(提取 5 个的倍数),这样我就有了第 5、10、15 个......图像。请指导我。

1个回答

您可以使用模运算符来识别计数的倍数。每当它是 5 的倍数时保存图像,否则忽略它并移动到 while 循环的下一次迭代。

确保计数器在 if 语句之外。它将计算每次迭代。这就是我们将如何确定当前图像是否为 5 的倍数。

import cv2     
import os
os.chdir('D:/Python images/videofolder') 
cap = cv2.VideoCapture('D:/Python images/test_videos/testcutvideo1.avi')
cap.isOpened()

count = 0
success = True
while success:
    success,image = cap.read()
    if count % 5 == 0:
        cv2.imwrite("image%d.jpg" % count, image) # save frame as JPEG file
    count += 1