2010-04-06 33 views
18

Tôi gặp sự cố với một số mã OpenCV cơ bản. Đây là mã của tôi:Sự cố khi đọc hình ảnh bằng chức năng "cv :: imread" trong OpenCv

cv::Mat src; 
src=imread("Calibration.bmp",0); 

if (src.empty()) 
    cout << "Cannot load image" << " "; 
else 
    cout << src.cols << " " << src.rows << " "; 

Unfortunatelly cv :: imread trả về ma trận NULL với bất kỳ loại hình ảnh đầu vào (Tôi đã thử .bmp, .jpg). Tên tệp có vẻ hoạt động tốt (chương trình không kết thúc với lỗi), vì việc sử dụng tên tệp sai tạo ra một thông báo lỗi. Tôi đã thử sử dụng kiểu cũ "CvLoadImage" nhưng cùng một kết quả đã xảy ra. Có ai có ý tưởng làm thế nào để sửa lỗi này?

Trả lời

22

Ok, tôi đã khắc phục sự cố ... Sự cố phát sinh khi bạn đang trộn lẫn bản phát hành và gỡ lỗi lib OpenCV. Tôi đã thay đổi tên đường dẫn và tên libs trong thuộc tính dự án và "cv :: imread" hoạt động tốt.

+9

Trong thư mục OpenCV \ lib của bạn, bạn sẽ tìm thấy hai loại tệp .lib (ví dụ: cv210.lib và cv210d.lib). Nếu bạn đang xây dựng giải pháp của bạn trong chế độ gỡ lỗi, trong thuộc tính dự án bạn nên liên kết với cv210d.lib, nếu bạn đang xây dựng giải pháp của bạn trong chế độ phát hành, bạn nên liên kết với cv210.lib. Điều tương tự tương ứng với các tệp dll từ OpenCV/bin dorectory. Tôi hy vọng nó sẽ giúp đỡ và xin lỗi vì đã không trả lời trong một thời gian:/ – Marcin

+1

Đó là sự thật, nhưng tại sao điều này lại xảy ra? Bởi vì chức năng khác hoạt động hoàn hảo ngay cả khi trộn thư viện. Tại sao chức năng này? http://stackoverflow.com/q/9125817/744859 –

+1

Chỉ cần cứu tôi khỏi rất nhiều đau đầu. Cảm ơn. – Aliostad

0

Tôi đã có hành vi này khi cố gắng tải hình ảnh bitmap ARGB (mà tôi đã cố tải bằng màu). Việc chuyển đổi bitmap thành RGB (24bpp) đã giải quyết được vấn đề.

+0

Bạn có thể vui lòng giải thích về mặt mã không? – Maham

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