2017-05-04 4 views
0

ユーザからfile_nameに動的にアクセスしてからvideoCapture(file_name)に渡して処理します。cv2.videoCapture(filename)ファイル名を動的に割り当てる(クローズ)

コード:

import cv2 
import numpy as np 
import os 
import sqlite3 
import pickle 
from PIL import Image 
import sys 


faceDetect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml'); 
rec = cv2.createLBPHFaceRecognizer(); 


''' 
Dynamically accessing the fileName 

Error seems to be here in the following couple of codes 
Note: i am assigning file_name as <"test.mp4"> 
''' 
file_name = raw_input("Enter file name: ") 
print file_name 


cam = cv2.VideoCapture(file_name) 

while cam.isOpened(): 
    ret,img = cam.read() 

    if ret == True: 
     gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)   
     faces = faceDetect.detectMultiScale(gray,1.3,5); 
     for(x,y,w,h) in faces : 
      cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) 
      id,conf=rec.predict(gray[y:y+h,x:x+w]) 
      ''' 
      Few lines of code 
      ''' 

     cv2.imshow("Face",img); 
     if (cv2.waitKey(1) == ord('q')): 
      break; 
    else : 
     print ('ret is false') 
     break 
cam.release() 
cv2.destroyAllWindows() 

それがエラーを示していないが、それはwhile(cam.isOpened):ループを実行しません。私は何かが欠けていますか?

+0

ファイル名をハードコードする場合はどうすればいいですか? –

+0

はい。 cam = cv2.VideoCapture(file_name)がcam = cv2.VideoCapture( "test.mp4")に置き換えられれば正常に動作します。 –

+1

私のマシンでコードを試してみました。うまくいきました。レットは何を言っているのですか?本当かどうか?私はこれまで、VideoCaptureが多くの場合にエラーをスローしないことを観察しました。 – harshkn

答えて

1

引用符を付けずにファイル名を入力してください。それはうまく動作します。入力にアルファベットがあるので、すでに文字列オブジェクトになります。引用符を追加すると、間違ったファイル名を入力するようになります。私がコメントで言ったように、入力ファイル名が存在しない場合、videocaptureはエラーをスローしません。希望する場合は

関連する問題