2012-09-14 36 views
5

Có thể có lỗi trong số OpenCV2.4 highgui để chụp khung hình từ video trong cửa sổ?Lỗi có thể có trong OpenCV2.4 chụp khung hình từ video

Tôi đã cài đặt cả các thư viện biên dịch sẵn, những người biên soạn bởi tôi, tôi có thể biên dịch tất cả mọi thứ một cách hoàn hảo và tôi có thể chạy các chương trình của tôi nếu

họ là hình ảnh dựa. Sự cố chỉ dành cho video. tai nạn OpenCV trong hàm này luôn:

virtual IplImage* retrieveFrame(int) 
    { 
     unsigned char* data = 0; 
     int step=0, width=0, height=0, cn=0; 

     if(!ffmpegCapture || 
      !icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn)) <-------CRASHES HERE 
      return 0; 
     cvInitImageHeader(&frame, cvSize(width, height), 8, cn); 
     cvSetData(&frame, data, step); 
     return &frame; 
    } 

Đây là bên trong lớp cap_ffmpeg.cpp và được gọi bằng VideoCapture.

Tôi đã thử phiên bản 2.4.2 và 2.4.9. programes của tôi đã được làm việc finde với opencv2


Thông tin thêm

  • Windows 7

  • Xây dựng các dự án với cmake (quan trọng vì nó có thể là cmake mà không xây dựng/Phát hiện codec bên phải)

  • VisualStudio 9 2008

  • OpenCV 2.4.2

EDIT

Dường như nó thực sự là một bug, vì vậy, làm thế nào tôi có thể giải quyết vấn đề này và thay đổi mã của tôi để có thể đọc avi các tập tin?

+2

Tại sao không? Đó là phần mềm :) Có vẻ như vấn đề của bạn được mô tả http://code.opencv.org/issues/2115 –

+0

@Sergey hehe, vâng tôi tin điều đó, nhưng đó là một nỗi đau.Tôi cần phải phát triển và bây giờ tôi phải chiến đấu với điều này ... kiên nhẫn –

+0

theo mô tả bạn cần phải hạ cấp 2.4-> 2.1 hoặc chỉ sửa chữa nó một mình và xuất bản bản vá của bạn để giúp người khác :) Theo hiểu biết của tôi nó là xấu ý tưởng sử dụng ffmpeg trên Windows. AFAIR nó nên được chụp DirectDraw cho OpenCV, nhưng có lẽ tôi sai. –

Trả lời

5

Là giải pháp tạm thời, tôi quyết định mã hóa lại video để OpenCV không sử dụng ffmpeg. Tôi đã sử dụng VirtualDub với video nén microsoft 1, sử dụng trình điều khiển "msvidc32.dll".

Tính năng này hoạt động với tất cả các video của tôi nên hiện tại tôi vẫn có thể tiếp tục làm việc với OpenCV trong cửa sổ.

enter image description here

1

Tôi có vấn đề tương tự. Tôi đã tải xuống VirtualDub, nhưng nó không mở một trong các video avi của tôi vì mã hóa FMP4 của nó. Vì vậy, cuối cùng, giải pháp giải quyết vấn đề là cài đặt ffdshow, bộ giải mã cho các cửa sổ. Xem liên kết này: http://www.moviecodec.com/video-codecs/fmp4-codec-with-virtualdub-45814/

Sau đó, tôi không cần sử dụng VirtualDub nữa để mã hóa lại video của mình nữa!

1

nếu bạn sử dụng x64. Vui lòng sử dụng opencv_ffmpeg245_64.dll giải quyết này có thể giải quyết vấn đề. Hoặc đổi tên opencv_ffmpeg245_64.dll thành opencv_ffmpeg245.dll có thể giải quyết được vấn đề.

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