python cv2视频分辨率

时间:2017-08-10 05:37:16

标签: python video resolution cv2

我尝试以这种方式改变视频分辨率(用mp4!)(到800x600):但它不起作用,当我使用cap.get(3)和(4)时,每次defualt 1280x720返回它!

;

我做错了什么?

我试过了 -

import cv2
cap = cv2.VideoCapture('file')
while(cap.isOpened()):
    cv2.waitKey(10)

    ret, frame = cap.read()
    cap.set(3, 800)
    cap.set(4, 600)

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) 
    print cap.get(3) # return default 1280       

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

cap.release()
cv2.destroyAllWindows()

cv2.resizeWindow("ssss", 300, 300), 

没效果!

4 个答案:

答案 0 :(得分:5)

{!! Form::open(['route' => 'jamaah.store']) !!}
{{dd($errors)}}

此代码适用于网络摄像头,而不适用于文件

对于视频文件,您可以调整窗口大小

import cv2
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
    cv2.waitKey(10)

    ret, frame = cap.read()
    cap.set(3, 800)
    cap.set(4, 600)

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA) 
    print cap.get(3) # return default 1280       

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

cap.release()
cv2.destroyAllWindows()

用于第一个定义具有名称的窗口并调整其大小

示例

cv2.resizeWindow(winname, width, height) 

for Detail resize window

答案 1 :(得分:1)

cap.set()在低于640,480的分辨率下无效 (至少对于我的Macbook Pro) 您可以提高分辨率,但是例如将其设置为300,300无效。 根据我的经验,您需要在resize()之后在框架上调用read()

答案 2 :(得分:0)

我认为您的代码中有一些内容可能需要注意。

  1. VideoCapture cap = cv2.VideoCapture('file') 所述,如果您想访问默认的WebCam,则需要按如下方式初始化该类:

    set

    如果您尝试更改相机的分辨率,我建议在初始化cap的正下方移动两条cap = cv2.VideoCapture('file') cap.set(cv2.CAP_PROP_FRAME_WIDTH, width) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height) # Your while loop and the rest of the code... 行并仅执行一次 - 而不是每次你在框架中阅读的时间。您还可以使用常量来访问正确的属性:

    resize
  2. 如果您尝试从文件中读取框架并希望更改其分辨率,则可能需要使用OpenCV documentation所述的resize(ret, ret, Size(800, 600), 0, 0, INTER_CUBIC); 方法}。这需要在循环中完成,就在您在框架中读取之后。它可能是这样的:

    dataAdapter = new MyCustomAdapter(AddRolePermission.this, listPageActionMaster);
    listView.setAdapter(dataAdapter);
    
  3. 我希望这会有所帮助。

答案 3 :(得分:-1)

解决了:

 cv2.namedWindow("framename", 0)
 cv2.resizeWindow("framename", 800, 600)
 cv2.imshow('framename',gray)