如何更改帧分辨率opencv python

时间:2019-02-04 18:33:31

标签: python opencv resolution cameracapturetask frame-size

我是openCv的新手,我只是用python编写了一个小程序来实时捕获相机。我想将以px为单位的帧大小从标准640x480更改为1280x720。我的Logitech摄像机具有HD分辨率(720p),所以我知道这不是摄像机问题...

这是代码:

import numpy as np
from time import sleep
import cv2
import time

cap = cv2.VideoCapture(0)

cap.set(3,1280)
cap.set(4,720)

sleep(2)


while(True):

    ret, s = cap.read()

    cv2.imshow('frame', s)
    if cv2.waitKey(20) & 0xFF == ord('q'):
        break


cap.release()
cv2.destroyAllWindows()

但是当我运行它时,出现此错误:

================== RESTART: C:/Users/Mattia/Desktop/fgs.py ==================

    Traceback (most recent call last):
      File "C:/Users/Mattia/Desktop/fgs.py", line 18, in <module>
        cv2.imshow('frame', s)
    cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:350: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我正在使用python 3.6和openCv 4.0

有人可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我发现了问题,openCV // Create. unsigned const N = 100; std::unique_ptr<std::atomic<int>[]> p(new std::atomic<int>[N]); // Initialize. for(unsigned i = 0; i < N; ++i) p[i].store(0, std::memory_order_relaxed); // Atomically increment. auto unpredictable_index = std::rand() % N; int old = p[unpredictable_index].fetch_add(1, std::memory_order_relaxed); 被bug了,它没有任何原因地显示了错误,我只是改用了较旧的openCv版本,所以就可以了!

要卸载openCv(在Windows 10上使用Cip Administrator窗口,使用Pip):

4.0.0.21

安装旧版本的命令:

pip uninstall opencv-contrib-python

谢谢!

希望对遇到同样问题的其他人有所帮助!