我正在使用通過以太網端口傳輸它們的高速IP攝像頭拍攝的圖像。在傳輸過程中,偶爾會丟失或損壞幾個字節,而沒有任何視覺影響。當我使用cvLoadImage以序列加載圖像時,通常出現諸如「Corrupt JPEG data:數據段提前結束」或「Corrupt JPEG data:無關字符在標記0 * d9之前」之類的消息。如何在OPENCV中禁用JPEG損壞消息?
我不希望cvLoadImage顯示這樣的錯誤,因爲它們很常見,因爲圖像的高速傳輸。同時打印到控制檯也很耗時,因爲我可能一次處理多達2000張圖像。
如何禁用這些消息。我擁有Opencv 2.0源代碼,如果我獲得正確的指針,可以深入研究它。
附:我試圖調查grfmt_jpeg.cpp和類似的源文件,但沒有在任何地方找到這個錯誤消息。
的Comme在cap_v4l.cpp中(在2.4.7中)提到了用高速攝像機提到的錯誤消息的修復 - 可能這已經在v2.0中。但是,如果您真的只使用OpenCV 2.0,那麼值得檢查升級到2.4.7是否可以解決問題。 – Bull
Opencv 2.0的src/highgui中有一個cap_v4l.cpp。評論說:「解決linux上高分辨率UVC相機的可靠性問題,症狀是圖像損壞和'錯誤的JPEG數據:數據段過早結束'在stderr上」。但是,實際的錯誤消息不會打印在這裏。我的計劃是找到將它打印到stderr的代碼,然後禁用這些代碼行。我正在尋找性能提升,因爲這個錯誤被打印到我的控制檯應用程序中的控制檯,並降低了它的速度。 – marc1886
http://www-personal.umd.umich.edu/~dennismv/corruptjpeg.html這似乎是一個可能的解決方案,也許我必須對libjpeg中的某些代碼進行更改,然後重新編譯它。 jerror.h有一行說JMESSAGE(JWRN_EXTRANEOUS_DATA,「Corrupt JPEG data:%u extraneous bytes before marker 0x%02x」)。 JMESSAGE(JWRN_HIT_MARKER,「損壞的JPEG數據:數據段過早結束」)我會研究它,並希望讓你們知道它是否有效。 – marc1886