Значение FPS не понимается как десятичное или целочисленное значение в методе VideoWriter - PullRequest
0 голосов
/ 01 апреля 2020

Итак, в настоящее время я пытаюсь извлечь исходный видеофайл, добавить имя файла для создания нового, обработать каждый кадр оригинала и записать каждый кадр в новое видео.

Я выделил ошибку. это здесь 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
...