Итак, в настоящее время я пытаюсь извлечь исходный видеофайл, добавить имя файла для создания нового, обработать каждый кадр оригинала и записать каждый кадр в новое видео.
Я выделил ошибку. это здесь newVid = cv2.VideoWriter (вывод, -1, 30,0, (newW, newH))
Когда я запускаю эту строку с 30 кадрами в секунду, python (в IDE Spyder 4.1) говорит, что 30 - это кортеж, а не реальное число. Когда я запускаю его с 30.0, он говорит, что ожидает целое число, а не число с плавающей запятой.
Пока игнорируйте операции с исходным изображением, это просто обнаружение объекта шаблона, которое работает так, как мне нужно. Это единственная ошибка, которую я получаю в более широком сценарии.
# importing libraries
import cv2
import numpy as np
# Create a VideoCapture object and read from input file
path = r'C:\Users\BeckerLab\Downloads\20200314165554.MTS'
cap = cv2.VideoCapture(path)
point = path.find('.')
def insert_dash(path, point):
return path[:point] + '_processed' + path[point:]
newH = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
newW = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
output = insert_dash(path, point)
newVid = cv2.VideoWriter(output,-1, 30.0, (newW, newH))
cap.release()
newVid.release()
# Closes all the frames
cv2.destroyAllWindows()
Kernal Results
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.
IPython 7.2.0 -- An enhanced Interactive Python.
Traceback (most recent call last):
File "C:\Users\BeckerLab\almost.py", line 20, in <module>
newVid = cv2.VideoWriter(output,-1, 30.0, (newW, newH))
TypeError: integer argument expected, got float
runfile('C:/Users/BeckerLab/almost.py', wdir='C:/Users/BeckerLab')
Traceback (most recent call last):
File "C:\Users\BeckerLab\almost.py", line 20, in <module>
newVid = cv2.VideoWriter(output,-1, 30, (newW, newH))
TypeError: must be real number, not tuple