2011-08-12 40 views
10

Làm thế nào để cài đặt Camera FPS?Làm thế nào để cài đặt FPS camera trong OpenCV? CV_CAP_PROP_FPS là một hình ảnh giả

Có thể là cvSetCaptureProperty (cameraCapture, CV_CAP_PROP_FPS, 30); ?

Nhưng nó trở HIGHGUI LỖI: v4l2: Không thể để có được tài sản (5) - Lập luận không hợp lệ

Vì không có thực hiện trong highgui/cap_v4l.cpp

static int icvSetPropertyCAM_V4L(CvCaptureCAM_V4L* capture, 
            int property_id, double value){ 
    static int width = 0, height = 0; 
    int retval; 

    /* initialization */ 
    retval = 0; 

    /* two subsequent calls setting WIDTH and HEIGHT will change 
     the video size */ 
    /* the first one will return an error, though. */ 

    switch (property_id) { 
    case CV_CAP_PROP_FRAME_WIDTH: 
     width = cvRound(value); 
     if(width !=0 && height != 0) { 
      retval = icvSetVideoSize(capture, width, height); 
      width = height = 0; 
     } 
     break; 
    case CV_CAP_PROP_FRAME_HEIGHT: 
     height = cvRound(value); 
     if(width !=0 && height != 0) { 
      retval = icvSetVideoSize(capture, width, height); 
      width = height = 0; 
     } 
     break; 
    case CV_CAP_PROP_BRIGHTNESS: 
    case CV_CAP_PROP_CONTRAST: 
    case CV_CAP_PROP_SATURATION: 
    case CV_CAP_PROP_HUE: 
    case CV_CAP_PROP_GAIN: 
    case CV_CAP_PROP_EXPOSURE: 
     retval = icvSetControl(capture, property_id, value); 
     break; 
    default: 
     fprintf(stderr, 
       "HIGHGUI ERROR: V4L: setting property #%d is not supported\n", 
       property_id); 
    } 

    /* return the the status */ 
    return retval; 
} 

Làm thế nào để giải quyết nó?

Trả lời

6

Tôi không biết liệu điều đó vẫn hợp lệ, nhưng một thời gian trước đây, khoảng một năm rưỡi, tôi đã gặp phải vấn đề chính xác đó. Tôi đã liên lạc với nhà phát triển OpenCV và anh ấy nói với tôi rằng khả năng truy cập và khả năng thay đổi một số thuộc tính của ảnh chụp không được thực hiện và một số khác chỉ hoạt động với một số loại máy ảnh nhất định. Cuối cùng tôi đã xem xét libdc1394 (hoạt động trong linux) và thực hiện một số chức năng chuyển đổi dữ liệu được truy xuất bởi libdc1394 thành IplImages từ OpenCV. Đó không phải là một nhiệm vụ khó khăn như vậy.

+0

Tôi xác định rằng không phải tất cả máy ảnh đều hỗ trợ tất cả Hoạt động. –

+0

Tôi chưa bao giờ nói điều đó, tôi chỉ nói với kinh nghiệm của mình và cách tôi giải quyết một vấn đề tương tự. –

+0

Đó là sự thật, nhưng tôi có một c920 Logitech và máy ảnh đó không hỗ trợ tất cả các hoạt động. Tôi chỉ muốn hỗ trợ khiếu nại của bạn "người khác chỉ làm việc cho một số loại máy ảnh" :), http://stackoverflow.com/questions/16432676/cant-access-properties-of-cvvideocapture-with-logitech-c920 –

3

séc opencv2.4 cuốn sổ tay ra, nắm bắt điều video là tốt hơn nhiều so với trước,

-> set (CV_CAP_PROP_FPS, 30); làm việc cho tôi hầu hết các lần. nhưng hiệu quả thấp một chút.

chỉ trong trường hợp bạn có thể không thích opencv2.4 mới và vẫn muốn điều khiển máy ảnh của mình. kiểm tra lib videoinput tại đây. nó hoạt động tốt và sử dụng các tính năng directshow. http://www.aishack.in/2010/03/capturing-images-with-directx/ http://www.muonics.net/school/spring05/videoInput/

7

sử dụng giấy gói python cho opencv, nó làm việc cho tôi để tham khảo các biến như:

cap = cv2.VideoCapture(1) 
cap.set(cv2.cv.CV_CAP_PROP_FPS, 60) 

Tôi sử dụng python 2.7.3 và 2.4.8 opencv

máy ảnh này được PS3 Eye

+1

Tôi đang sử dụng python 3.5.2 và ps3 mắt và opencv 3.2.0-dev và linux và phương pháp này làm việc cho tôi. Tên của hằng số dường như đã thay đổi thành chỉ CAP_PROP_FPS. –

+0

Bạn cũng có thể đặt 187 fps: D (nếu đặt 320x240 độ phân giải thấp qua CAP_PROP_FRAME_WIDTH/HEIGHT) –

3

CV_CAP_PROP_FPS là một KHÔNG giả. Xem cap_libv4l.cpp (1) trong repo OpenCV github. Điều quan trọng là để đảm bảo, bạn sử dụng libv4l trên v4l trong khi cấu hình OpenCV. Cho rằng, trước khi chạy cmake, cài đặt libv4l-dev

sudo apt-get install libv4l-dev 

Bây giờ trong khi cấu hình OpenCV với cmake, kích hoạt tùy chọn, WITH_LIBV4L. Nếu mọi việc suôn sẻ tốt, trong tình trạng cấu hình, bạn sẽ thấy một số điều tương tự như dưới đây

V4L/V4L2: Using libv4l1 (ver)/libv4l2 (ver)

Và sau đó khi xây dựng mã OpenCV của bạn, bạn sẽ phải liên kết với libv4l1/libv4l2/libv4lconvert.

Giá trị FPS phòng thu ở độ phân giải bạn chọn, không cần webcam của bạn hỗ trợ. Bạn có thể kiểm tra độ phân giải/fps được hỗ trợ bằng các công cụ đồ họa như pho mát hoặc lệnh như lsusb (2)

+1

Làm việc cho tôi cho OpenCV 3.0.0 trên Ubuntu 12.04. Sau khi cài đặt libv4l-dev, tôi chạy lại [cmake gốc] của tôi (http://stackoverflow.com/a/29238291/1628638) ('WITH_LIBV4L' đã được kích hoạt theo mặc định) và liên kết làm việc mà không cần thay đổi. Bắt và đặt CV_CAP_PROP_FPS hiện hoạt động cho Rạp chiếu phim LifeCam của tôi. –

+1

'v4l2-ctl -d 0 --list-formats-ext' liệt kê tỷ lệ khung hình được hỗ trợ cho từng định dạng pixel (ví dụ: 'MJPG') và độ phân giải. Đối với các rạp chiếu phim LifeCam, MJPG và 640x480, tôi có thể đặt 30 khung hình/giây nhưng chỉ đo được 15 khung hình/giây trong mã "trình xem máy ảnh" OpenCV của tôi. –

+0

Điều này cũng có nghĩa là nó có thể không hoạt động trong một số phiên bản đã biên dịch hoặc trên các nền tảng khác nhau (như cửa sổ). –

Các vấn đề liên quan