如何在特定位置区分和存储差异化帧

问题描述 投票:0回答:1

已经附加了用于帧区分的源代码并将差异化的帧存储在指定的位置但是在错误缩进中出现错误。将此问题作为堆栈溢出中的问题...我被限制为特定时期的问题。也上传代码

filename.朋友

import cv2
import os
import glob 

def extractFrames(pathIn, pathOut):
os.mkdir(pathOut)

cap = cv2.VideoCapture(pathIn)
count = 0

while (cap.isOpened()):

    # Capture frame-by-frame
    ret, frame = cap.read()

    current_frame_gray = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY)
    previous_frame_gray = cv2.cvtcolor(previous_frame, cv2.COLOR_BGR2GRAY)

    frame_diff = cv2.absdiff(current_frame_gray,previous_frame_gray)        
    if ret == True:

        print('Read %d frame: ' % count, ret)
        cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame_diff)  # save frame as JPEG file

        count += 1
    else:
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
def main():
extractFrames('C:/Users/yaazmoha/Desktop/BE PROJECT/INPUT/Tiger in field(1080P_HD).mp4', 'fd3')
if __name__=="__main__":
main()
python opencv video
1个回答
0
投票

修复了你的代码。你有一些缩进错误。由于Python不使用像C ++这样的大括号,因此需要使用适当的缩进来分隔代码。

import cv2
import os
import glob 

def extractFrames(pathIn, pathOut):
    os.mkdir(pathOut)

    cap = cv2.VideoCapture(pathIn)
    count = 0

    while (cap.isOpened()):

        # Capture frame-by-frame
        ret, current_frame = cap.read()

        current_frame_gray = cv2.cvtColor(current_frame, cv2.COLOR_BGR2GRAY)
        if count > 1:
            previous_frame_gray = cv2.cvtcolor(previous_frame, cv2.COLOR_BGR2GRAY)

            frame_diff = cv2.absdiff(current_frame_gray,previous_frame_gray)        
            if ret == True:

                print('Read %d frame: ' % count, ret)
                cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame_diff)  # save frame as JPEG file

                count += 1
            else:
                break

        previous_frame = current_frame

    # When everything done, release the capture
    cap.release()
    cv2.destroyAllWindows()

def main():
    extractFrames(r"C:\Users\mathesn\Downloads\Wildlife.mp4", 'fd3')

if __name__=="__main__":
    main()

我采取自由来修复代码的其他部分。但是这个代码需要一些其他的修复,比如只有当目录不存在时才创建一个目录,保持框架的彩色版本以便cv2.cvtColor()不会失败等等,但我会留给你。

© www.soinside.com 2019 - 2024. All rights reserved.