2017-08-10 11 views
0

この方法でビデオ解像度を(800x600に)変更しようとしましたが、cap.get(3)と(4)を使用すると、 1280x720の間違った時間!python cv2ビデオ解像度

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), 

cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 600) 
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 800) 

全く効果が!

+0

試みは、それはあなたの仕事は、変更がファイルにウェブカメラで800ない1280 – Kallz

+1

を与えます! - mp4 – TheRutubeify

+1

@TheRutubeifyあなたがスタックオーバーフローで答えを見つけたら。あなたはこれらの規則に従うべきです。 https://stackoverflow.com/help/someone-answers。あなたがその質問に対する答えを知っているなら。回答パネルに答えを表示する必要があります。問題パネルで答えを出してはいけません。 – Rex

答えて

2
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() 

このコードがwebcameで動作し、ビデオファイルのファイル

で、あなたはウィンドウにそのための

cv2.resizeWindow(winname, width, height) 

のサイズを変更する最初の名前でウィンドウを定義し、それをリサイズすることができません

cv2.namedWindow("frame", 0); 
    cv2.resizeWindow("frame", 800,600); 

for Detail resize window

+0

使い方は?ループ内のcv2.resizeWindow( "cap"、300、300)? ( – TheRutubeify

+0

)「Final」の頭を持つ新しい「空白」の空白ウィンドウ – TheRutubeify

+1

@TheRutubeify cv2.imshow( 'frame'、gray)行がcv2.imshow( 'Final'、gray)に変更されました – Kallz

0

あなたのコードに注意が必要なものがいくつかあると思います。

cap = cv2.VideoCapture('file') 

は、あなたが変更しようとしている場合:あなたは、デフォルトのWebカメラにアクセスする場合、あなたは次のようにクラスを初期化する必要があるだろう、VideoCaptureためOpenCV documentationで説明したように

  1. カメラの解像度は、私はcapの初期化のすぐ下に2つのset行を移動して、1回だけ実行することをお勧めします。あなたはまた、右の属性にアクセスするための定数を使用することができます。

    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... 
    
  2. ファイルからフレームを読んで、それの解像度を変更したいしようとしている場合、あなたはおそらくhereを説明するようにresize方法を使用したいと思います。これは、フレームを読み込んだ直後にループ内で行う必要があります。

    resize(ret, ret, Size(800, 600), 0, 0, INTER_CUBIC); 
    

私はこのことができます願っています:それは何かのようである可能性があります。

+0

私はcap.set(cv2.CAP_PROP_FRAME_WIDTH、800)を試しましたcap.set(cv2.CAP_PROP_FRAME_HEIGHT、600)それは役に立たない! – TheRutubeify

+0

私が上記のように同じ - cap.set(3,800)とcap.set(4,600)! – TheRutubeify

-1

は解決:cv2.VideoCapture(0)することによって、あなたのウェブカメラで

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

最後に、最後にあなたの答えとして – Kallz

+0

はい、あなたの答えは、私はちょうど答えに入れました!私は何をする必要がありますか? – TheRutubeify

+1

@ TheRutubeify回答があなたの問題を解決したら、それを受け入れてupvoteを与えるためにチェックマークをクリックすることができます。内容をコピーして、再度投稿してください。 –

関連する問題