2012-01-14 51 views
12

Tôi đang cố gắng tải tệp đào tạo xml với CascadeClassifier::load() và nó hoạt động tốt ở chế độ Gỡ lỗi, nhưng ở chế độ Phát hành, tôi gặp lỗi thời gian chạy.Lệnh OpenCV đơn giản hoạt động trong chế độ gỡ lỗi nhưng không phát hành chế độ

Các lỗi tôi nhận được là:

Unhandled ngoại lệ tại 0x000007feefbf4938 trong Testing.exe: 0xc0000005: Tiếp cận văn bản vi phạm vị trí 0x0000000000000027.

Mã của tôi là như sau:

CascadeClassifier c; 
if (!c.load("C:/data/haarcascade_frontalface_alt.xml")) 
{ 
    exit(1); 
} 

Mã treo trên dòng tải. Tại sao điều này lại xảy ra?

+1

Đây có phải là mã của bạn không? nếu có, có thể đó là một lỗi trong OpenCV. nếu không, hãy xóa TẤT CẢ mã của bạn xung quanh dòng này và cố gắng bản địa hóa lỗi – Sam

+0

Giao diện C++ cho Windows đã khiến tôi rất đau đầu. Hãy thử điều này với giao diện C của OpenCV và chuẩn bị sẵn sàng để ăn mừng. Câu hỏi này xứng đáng có nhiều upvotes hơn. – karlphillip

+7

Bạn có đang liên kết gỡ lỗi các thư viện OpenCv để gỡ lỗi phiên bản ứng dụng của bạn và Phát hành Opencv cho phiên bản Phát hành ứng dụng của bạn không? Tôi có thể lo lắng nhưng bạn nên kiểm tra nó. – Patryk

Trả lời

8

đảm bảo bạn đang liên kết đến các tệp phát hành của openCV khi chạy ở chế độ phát hành. Tôi đã có vấn đề tương tự khi tôi cố gắng tải các tập tin với phát hành hỗn hợp và dlls gỡ lỗi.

Xem this bài đăng.

+0

Tôi đã phạm sai lầm tương tự khi thêm ** Phụ thuộc bổ sung ** vào Trình liên kết. thay đổi thành 'opencv_world330.lib' từ' opencv_world330d.lib' đã sửa nó cho tôi. – Sndn

0

Không đoán tại sao đường dây load của bạn sẽ chỉ vi phạm quyền truy cập đối với bản phát hành bản phát hành. Vì vậy, bước tiếp theo là thiết lập các tệp nhị phân phát hành OpenCV của bạn bằng ghi nhật ký hoặc printfs hoặc bất kỳ thứ gì phù hợp với bạn. Loại gỡ lỗi này hoạt động trong trường hợp này vì bạn có nguồn cho OpenCV và khả năng biên dịch lại với VS2010.

0

Tôi tin rằng lỗi của bạn nằm trong 'tải' tệp XML và cài đặt 'thư mục hoạt động' trong cài đặt dự án của bạn.

Nếu bạn goto cửa sổ Thuộc tính của dự án, hãy đảm bảo rằng 'Thư mục làm việc' trong tùy chọn "Gỡ lỗi" là chính xác. Thay đổi 'Cấu hình' (giữa Debug và Release) và bạn sẽ có thể so sánh.

Đôi khi bạn sẽ gặp phải lỗi này khi bạn đang cố đọc một tệp không tồn tại. Sử dụng đường dẫn cục bộ trong thư mục làm việc 'sai' thường là thủ phạm khi nó hoạt động trong một cấu hình chứ không phải cấu hình khác.

EDIT:

Tệp đó tồn tại và có đúng XML không?

+0

Tôi sẽ kiểm tra những gì bạn đề nghị khi tôi về nhà, nhưng có nó tồn tại và là thích hợp. Như tôi đã nói, điều này hoạt động hoàn toàn tốt trong chế độ gỡ lỗi, nhưng không phải chế độ phát hành. – zebra

+0

Đúng, nhưng nếu bạn đang bắt đầu mã từ VS ngay cả trong chế độ phát hành, nó vẫn sẽ xem xét đến "Thư mục làm việc" được đề cập ở trên để xem nơi giả sử nó ở. Nếu điều này không giống như chế độ gỡ lỗi VÀ bạn đang sử dụng đường dẫn cục bộ ở bất kỳ đâu (có thể là trường hợp), thì đó có thể là vấn đề của bạn. – g19fanatic

0

Điều này khá lạ. Kiểm tra các tùy chọn của bạn để gỡ lỗi và phát hành phiên bản, hãy chắc chắn rằng bạn đang sử dụng đúng phiên bản của các thư viện.

Tôi cố gắng chạy mã trên một dự án của tôi, và hoạt động tốt cả trong gỡ lỗi và phát hành phiên bản, với opencv 2.3.1

Hãy thử thêm các dòng mã để một dự án khác, với việc phát hành phiên bản làm việc và nơi bạn đã sử dụng opencv. Nếu nó hoạt động, thì vấn đề nằm trong cài đặt cấu hình.

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