2014-10-25 26 views
5

Cách truy cập vào CAP_PROP_FRAME_COUNT từ opencv trong python? Tôi cố gắng này:CAP_PROP_FRAME_COUNT hằng số bị thiếu trong mô-đun python opencv `cv2`

import cv2 
cap = cv2.VideoCapture('myvideo.avi') 
frames_count, fps, width, height = cap.get(cv2.CAP_PROP_FRAME_COUNT), cap.get(cv2.CAP_PROP_FPS), cap.get(cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT) 

Và đây:

import cv2 
import cv 
cap = cv2.VideoCapture('myvideo.avi') 
frames_count, fps, width, height = cap.get(cv.CAP_PROP_FRAME_COUNT), cap.get(cv.CAP_PROP_FPS), cap.get(cv.CAP_PROP_FRAME_WIDTH), cap.get(cv.CAP_PROP_FRAME_HEIGHT) 

và cũng này:

import cv2 
cap = cv2.VideoCapture('myvideo.avi') 
frames_count, fps, width, height = cap.get(cv2.cv.CAP_PROP_FRAME_COUNT), cap.get(cv2.cv.CAP_PROP_FPS), cap.get(cv2.cv.CAP_PROP_FRAME_WIDTH), cap.get(cv2.cv.CAP_PROP_FRAME_HEIGHT) 

Nhưng tôi nhận được lỗi này:

AttributeError: 'module' object has no attribute 'CAP_PROP_FRAME_COUNT' 

tôi m bằng cách sử dụng python 2.7.5OpenCV 2.4.9.

+3

opencv3.0 sẽ có cv2.CAP_PROP_FRAME_COUNT thích hợp (và cũng sẽ loại bỏ các submodule cv bị phản đối) – berak

Trả lời

12

Hằng số trong phiên bản đầu tiên của mô-đun python OpenCV có tiền tố CV_. Do đó, bạn có thể sử dụng cv.CV_CAP_PROP_FRAME_COUNT hoặc cv2.cv.CV_CAP_PROP_FRAME_COUNT.

+0

Có vẻ như để làm việc, nhưng ... Tôi khá hoang mang. Tại sao không phải là các hằng số được định nghĩa trong mô-đun 'cv2'? – ProGM

+5

Trong OpenCV 2.x, có vẻ như các hằng số có dạng 'cv2.cv.CV_CAP_X', trong khi trong OpenCV 3.x, chúng là' cv2.CAP_X' – cod3monk3y

+0

API xấu, OpenCV không hợp lệ. – acgtyrant

-1
import cv2 

import cv2.cv as cv 

Sử dụng CV2:

stream = cv2.VideoCapture(filename) 

print stream.get(cv.CV_CAP_PROP_FRAME_COUNT) 
8

Trong khi chạy macports trên OSX (opencv @ 3.0.0_1 + python27 + TBB)

Bạn có thể nhận CAP_PROP_FRAME_HEIGHT và CAP_PROP_FRAME_WIDTH như sau:

#!/opt/local/bin/python 
import cv2 
vcap = cv2.VideoCapture() 
# set frame width and height 
vcap.set(cv2.CAP_PROP_FRAME_WIDTH, 480) 
vcap.set(cv2.CAP_PROP_FRAME_HEIGHT, 640) 
vcap.open(0) 
Các vấn đề liên quan