0
我已經編寫了一個腳本,它使用cv2和其他一些模塊將視頻文件分割爲多個幀。到目前爲止,我很高興粘貼文件路徑並運行代碼,但現在我希望用戶輸入文件路徑和名稱以響應提示。這應該很簡單,但是我在爲我做os.path工作時遇到了很多麻煩。主要的問題是,我想要每個圖像文件(即幀)的名稱中都有一個數字,以顯示它在序列中的位置。下面的代碼是什麼我:使用os.path中的變量格式化文件路徑
filepath = input('Please enter the filepath for the clip: ')
clip = cv2.VideoCapture(filepath)
#### This code splits the clip into scenes
filepath1 = input('Please enter the filepath for where the frames should be saved: ')
name = input('Please enter the name of the clip: ')
ret, frame = clip.read()
count = 0
ret == True
while ret:
ret, frame = clip.read()
cv2.imwrite((os.path.join(filepath1,name, '(%d)','.png') % count, frame))
count += 1
然而,產生以下錯誤:
cv2.imwrite((os.path.join(filepath1,name, '(%d)','.png') % count, frame))
TypeError: Required argument 'img' (pos 2) not found
包括在os.path.join命令,括弧內% count, frame
變量給出了不同的錯誤:
TypeError: not all arguments converted during string formatting
它應該做的是寫一個數字叫name(x)
像MYcomputer/mydesktop/myfolder/
位置.png文件的。我不確定這裏出了什麼問題 - 任何幫助表示感謝!
感謝您爲我清除這麼多!但是,我現在得到了一個不同的錯誤: 'cv2.imwrite((os.path.join(filepath1,name +'(%d).png'%count),frame)) TypeError:必需參數'img '(pos 2)not found' 對此有何看法? – Lodore66
正如我所說,檢查你的「(」和「)」的位置;)imwrite需要作爲第一個參數的文件路徑,然後是圖像。你傳遞一個包含文件路徑和圖像的元組。所以雙「(」和 - 「)」太多了。 – BloodyD
啊,是的,我看到<咳嗽尷尬>。感謝一百萬,爲修復和教育!現在工作正常 – Lodore66