2012-09-10 40 views
6

Tôi vừa cài đặt OpenCV2.4.2 và tạo một dự án OpenCV bằng CMake. Tôi không nhận được bất kỳ lỗi biên dịch nào. Tôi có một số chức năng để xử lý hình ảnh và tôi có 2 ứng dụng:OpenCV2.4.2 ngoại lệ không được xử lý trên VideoCapture

1- Xử lý dữ liệu từ video

2- Xử lý dữ liệu mô phỏng.

Cả hai ứng dụng giống hệt nhau ngoại trừ việc trích xuất dữ liệu từ video.

VẤN ĐỀ: Đoạn video xử lý ứng dụng bị treo với

Unhandled ngoại lệ tại 0x75d8a048 trong program.exe Truy cập vi phạm đọc vị trí 0x049f08c0.

Nó bị treo trong phần này của mã này, khi đọc khung:

cv::VideoCapture _video; 
while(1) 
{  
     // grab the frame 
     _video >> frame; <-------------CRASHES HERE 
       processFrame(frame); 
} 

Vì vậy, tôi đoán có thể là một vấn đề với cv::VideoCapture lớp trong OpenCV 2.4.2. Làm thế nào tôi có thể phát hiện vấn đề và giải quyết nó?

EDIT

Với máy quay phim tôi quản lý để nắm bắt những thông báo lỗi:

OpenCV Error: Assertion failed (m.dims >= 2) in unknown function, file ..\..\..\ 
src\opencv\modules\core\src\matrix.cpp, line 268 
OpenCV Error: Assertion failed (0 <= _rowRange.start && _rowRange.start <= _rowR 
ange.end && _rowRange.end <= m.rows) in unknown function, file ..\..\..\src\open 
cv\modules\core\src\matrix.cpp, line 283 
+0

Cần xem một số mã thực tế của bạn. – count0

+0

bạn có thể gỡ lỗi và xem chính xác những gì đã xảy ra –

+0

OK, tôi đang ở trên đó –

Trả lời

4

Bạn đang kiểm tra nếu chụp thực sự mở tập tin/camera?

if(_video.isOpened()) { // check if capture succeeded 
     // do stuff 
    } 

Không phải tất cả codec đều được hỗ trợ theo mặc định. Điều này phụ thuộc vào thư viện bạn sử dụng bên dưới để mở video. (Điều này có thể là ffmpeg hoặc quicktime).

Ngoài ra bạn có thể bắt ngoại trừ chính mình, chỉ để được ở bên an toàn cho các vấn đề trong tương lai

try { 
    _video >> frame; 
} catch (cv::Exception) { 
    cout << "An exception has accurred" << endl; 
}; 
+0

Vâng, tôi đang kiểm tra và nó được mở ra. Tôi sử dụng video đã ghi. Tất cả mọi thứ được thực hiện ngay vì tôi sử dụng mã này với OpenCV 2.3.1 và nó không gây ra vấn đề –

+0

Có thể là một vấn đề với thư viện video được sử dụng, chạy nó mặc dù trình gỡ lỗi sẽ cung cấp cho bạn thông tin chi tiết hơn về cuộc gọi nào và video nào hệ thống con nó thực sự gây rắc rối. – count0

+0

Tôi đã thử xử lý ngoại lệ nhưng chương trình bị treo và dừng lại vì vậy ngoại lệ không bị bắt. Nó dừng lại ở dòng thứ hai của mã của bạn ... –