代码如下:
import cv2 as cv
import numpy as np
def video_demo():
cap = cv.VideoCapture("C:\Users\joysu\Videos\dancing.mp4")
w = cap.get(cv.CAP_PROP_FRAME_WIDTH)
h = cap.get(cv.CAP_PROP_FRAME_HEIGHT)
fps = cap.get(cv.CAP_PROP_FPS)
output = cv.VideoWriter("C:\test01.mp4",cv.CAP_ANY.np.int(cap.get(cv.CAP_PROP_FOURCC)), fps, (np.int(w), np.int(h)), True)
print(w, h, fps)
while True:
ret, frame = cap.read()
if ret is not True:
break
cv.imshow("frame", frame)
output.write(frame)
c = cv.waitKey(10)
if c == 27:
break
cv.destroyAllWindows()
if name == 'main':
video_demo()
报错信息:
Traceback (most recent call last):
File "C:\Users\joysu\PycharmProjects\pythonProject01\opencvtest01.py", line 83, in
video_demo()
File "C:\Users\joysu\PycharmProjects\pythonProject01\opencvtest01.py", line 63, in video_demo
** cv.CAP_ANY.np.int(cap.get(cv.CAP_PROP_FOURCC)), fps, (np.int(w), np.int(h)), True)**
AttributeError: 'int' object has no attribute 'np'
把这行:
output = cv.VideoWriter("C:\test01.mp4",cv.CAP_ANY.np.int(cap.get(cv.CAP_PROP_FOURCC)), fps, (np.int(w), np.int(h)), True)
改成这样试试:
output = cv.VideoWriter("C:\test01.mp4",int(cap.get(cv.CAP_PROP_FOURCC)), fps, (np.int(w), np.int(h)), True)
您好,是参数传入的不对。传入的宽np.int(w)和高np.int(h)应放在一个元组里,作为一个参数传入。(即加括号)而不能分开写。
具体涉及cv.VideoWriter的用法,可以参考我的这篇博客。
https://skylarkprogramming.blog.csdn.net/article/details/123915086
谢谢,关注并热情释疑。我再三确认代码,发现是代码有误
output = cv.VideoWriter("C:\test01.mp4",cv.CAP_ANY.np.int(cap.get(cv.CAP_PROP_FOURCC)), fps, (np.int(w), np.int(h)), True)
是cv.CAP_ANY与np.int中间这个标点符号的问题,应该是一个逗号“,”至于代码的其他部分是否最优化我还不确定,只改了这个逗号就能正常运行。
建议一行代码完成一个计算,不要写长代码