2017-04-10 11 views
0

質問の主なアイデアの頭に。私はPython 2.7、openCVを使っています。最後に、私はこのコードを持っています:アスペクト比のビデオからフレームのサイズを変更する方法

import cv2 
vidcap = cv2.VideoCapture('myvid2.mp4') 
success,image = vidcap.read() 
count = 0; 
print "I am in success" 
while success: 
    success,image = vidcap.read() 
    resize = cv2.resize(image, (640, 480)) 
    cv2.imwrite("%03d.jpg" % count, resize)  
    if cv2.waitKey(10) == 27:      
     break 
    count += 1 

私たちはビデオを持ち、.jpg画像として各フレームにカットしています。同時に、サイズを640x480にリサイズします。また、すべての画像に正しい順序の読み取りがあります。コードに問題はありませんし、うまくいきますが、...それはprevを保存しません。画像比率。そして、これは大きな問題です。なぜなら、私はそれが必要なのですから。

それが1920×1080のサイズを変更する、のは、どのように見えるか例えば: Resized image by pure code

比で問題があり、あなたが見ることができるように。 1920x1080 16:9が、640:480 4:3

そして、どのようにそれが私の夢の中で次のようになります。まず Resized image in ideal code

、それのあなたの読書をありがとうございました。あなたが私のコードのこの問題を解決するのを助けることができるなら、私は非常にうれしいでしょう〜 良い一日を、私の友人。

答えて

2

代わりにハードコードされた値640と480を使用するには、値によって元のフレームの高さと幅を分割することができるので、同様に、引数としてその供給:

while success: 
    success,image = vidcap.read() 
    height , width , layers = img.shape 
    new_h=height/2 
    new_w=width/2 
    resize = cv2.resize(image, (new_w, new_h)) 
    cv2.imwrite("%03d.jpg" % count, resize) 
関連する問題