2012-10-15 56 views
5

Tôi đang cố gắng quay video từ máy ảnh USB bằng OpenCV.OpenCV không khởi tạo máy ảnh USB

#include <highgui.h> 
#include <iostream> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    VideoCapture cap (-1); 
    if (!cap.isOpened()) 
     cout << "Cam initialize failed"; 
    else cout << "Cam initialized"; 

    return 0; 
} 

Không thể khởi chạy máy ảnh. cap.isOpened() đang trả về không.

Cùng một chương trình, với cùng một phiên bản OpenCV và cùng một máy ảnh USB, đang chạy chính xác trong máy của bạn tôi. Tôi đang chạy Fedora 16. Máy ảnh hoạt động tốt trong một ứng dụng khác (ví dụ: Cheese).

Tôi đã thực hiện một số tìm kiếm trong Google và Stack Overflow. Nhưng không có sự giúp đỡ hữu ích. Bất kỳ ý tưởng nào?

+1

Máy ảnh của bạn hoạt động trong ứng dụng khác? – vfcosta

+0

Bạn đã đọc điều này: http://stackoverflow.com/questions/4749498/cant-access-webcam-with-opencv – james

+0

@vfcosta Như tôi đã đề cập trước đó, máy ảnh hoạt động tốt với các ứng dụng khác. Tôi đã sử dụng nó trong Cheese, Kamoso và vlc. – Barshan

Trả lời

0

Các manual here nói rằng VideoCapture::VideoCapture(int device) chấp nhận

thiết bị: id của thiết bị video chụp mở (ví dụ: một chỉ số máy ảnh). Nếu có một máy ảnh duy nhất kết nối, chỉ cần vượt qua 0.

Tôi nghĩ bạn nên thay đổi -1 để 0 nếu bạn có 1 camera trong hệ thống của bạn.

+0

VideoCapture cap (0) không tìm được camera mặc định. Đi qua -1, tìm kiếm tất cả các máy ảnh khả dụng, do đó nó tốt hơn so với sử dụng 0. – Barshan

1

Thử chạy chương trình của bạn dưới dạng gốc. Bạn có thể không có quyền, và opencv không cho bạn biết nếu đó là lý do cap.isOpened() không thành công.

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