1. 程式人生 > >IJG JPEG庫執行時錯誤:Corrupt JPEG data 的解決方案

IJG JPEG庫執行時錯誤:Corrupt JPEG data 的解決方案

做嵌入式影象識別,用V4L2捕獲影象為JPEG格式,用IJG JPEG庫轉成BMP格式時偶爾出現如下錯誤或警告:

Corrupt JPEG data: XX extraneous bytes before marker 0xXX

Corrupt JPEG data: premature end of data segment

由於這些錯誤在IJG JPEG庫裡只認為是警告,如果不對其處理,程式碼將繼續執行,因而捕獲的影象不正常。這個錯誤對我的處理演算法結果造成影響,決定排除。

Google百度下來發現沒有什麼好的解決方案,最好的一個是對 Corrupt JPEG data: XX extraneous bytes before marker 0xXX的解決,他是這樣做的:

意思是把WARNMS2()注掉,然後重新編譯IJG JPEG原始碼,就不會出現Corrupt JPEG data: XX extraneous bytes before marker 0xXX。這個可有點勉強。。。太麻煩了,總應該有好的辦法。

Google百度一下 WARNMS2,沒有~於是找 JWRN_EXTRANEOUS_DATA,

找到了jerror.h的原始碼,看到下面有一段:

發現發出的異常訊息是emit_message,異常等級為-1, 於是處理掉這個異常就OK了!

程式碼如下:

先聲名一個異常處理函式:my_emit_message

再捕獲這個異常(注意這裡沒寫出其它異常型別處理,如error_exit):

這樣就解決了,Corrupt JPEG data: XX extraneous bytes before marker 0xXX 問題,不過把所有的emit_message異常都遮蔽了,並認為是失敗,程式碼執行後發現Corrupt JPEG data: premature end of data segment也是其中之一,所以也正好都解決了。程式碼運行了幾分鐘很正常,都顯示遮蔽了。

這個方法發上來備忘一下,也給需要的人蔘考。

相關推薦

IJG JPEG執行錯誤Corrupt JPEG data解決方案

做嵌入式影象識別,用V4L2捕獲影象為JPEG格式,用IJG JPEG庫轉成BMP格式時偶爾出現如下錯誤或警告: Corrupt JPEG data: XX extraneous bytes before marker 0xXX 或 Corrupt JPEG data: pr

執行錯誤“stack around the variable…was corrupted”

造冰箱的大熊貓@cnblogs 2018/11/1   引發問題的程式碼片段如下 WORD var; scanf ( "%d", &var );   包含上述程式碼的程式,編譯正常,執行時也正常接收使用者輸入的資料。但待到程式執行結束時提示“stack ar

AppScan安裝出錯無法從.NET執行安全策略中登出Appscan 解決方案

下載AppScan地址: AppScan_8.0破解版.z01  http://download.csdn.net/detail/ahy1024/4598865 AppScan_8.0破解版.z02  http://download.csdn.net/detail/ahy1

php執行遇到的一些問題和解決方案

1.用php指令碼向伺服器請求資料的時候,總是出現一些警告資訊: PHP Warning:  strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to us

關於IIS伺服器錯誤500 Internal Server Error,/”應用程式中的伺服器錯誤執行錯誤

注:大神請忽略! 首先描述一下環境,ASP.NET MVC專案,在本機IIS伺服器部署,本機以及區域網其他機器均可以正常訪問網站,部署到Windows Server 2008伺服器,是不是會遇到錯誤:500 Internal Server Error,如下影象這樣子的!

.NET 通過entity framework報數據連接錯誤ORA-01017: invalid username/password; logon denied

ces lse rac string lec oca policy system 得到 如題,答案為:【ORA-01017】.NET程序連接數據庫失敗 轉載文章內容如下: 遇到問題 使用 C#/.NET 開發的一個客戶端程序,需要連接 ORACLE 數據庫,使用 O

用Navicat連接MySQL數據出現1251錯誤密碼方式錯誤

flush cat oca mysql數據庫 方式 with 數據庫 nat l數據庫 原因:因為MySQL8.0是最新版密碼保存方式,而圖形化數據庫管理工具還是原先的密碼保存方式。 解決方式: 用CMD命令號方式進入MySQL use mysql; ALTER USER

Xcode archive 錯誤error itms90475

ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking supportrequires these orientations:'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortrai

Android apk執行錯誤java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient

最近在Hisi3751V500上移植一個新的專案,在執行gitv牌照方apk的時候提示java.lang.NoSuchMethodError: com.google.gson.GsonBuilder.setLenient 06-03 17:44:28.966 I/dalvikvm( 36

uploadify JavaScript 執行錯誤: “$”未定義

這是由於沒有引用jquery的包。 在<head></head>中間引入即可: <script src="../js/jquery-1.2.6.js" type="text/javascript"></script>   &n

第一次機房收費登陸-執行錯誤'91'

背景 最近開始第一次機房收費專案了,這就需要配置源資料庫,但是網上對於配置已經有了很多解決辦法,再此我就不在說明。現在我要解決的問題是在配置完之後,當你登陸時,你會遇到執行時錯誤‘91’這個問題。 出現原因 出現這個問題是由於你資料庫中的sa登入名的密碼與機房收費源系統的密碼不一致,如果

執行錯誤 terminate called after throwing an instance of 'std l

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

國稅Tax2 0 執行錯誤429 ActiveX部件不能建立物件的解決辦法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

python的Error集,17個新手常見Python執行錯誤

python的Error集,17個新手常見Python執行時錯誤 python及相關工具安裝Error集 1. 如果升級python版本中出現error while loading shared libraries: libpython2.7.so.1.0: cannot open shar

第一次使用jupyter建立python錯誤Creating Notebook Failed An error occurred while creating a new notebook.

當我們用命令列在瀏覽器中啟動jupyter notebook後需要點選右上角的New建立新的python檔案,此時會報錯。在Linux下可以用命令列解決這個問題。首先需要找到anaconda2中jupyter檔案,在anaconda2中的share檔案中,對jupyter執行如下命令,來修改jupy

java程式碼的MapReduce打包成jar 報錯 JAVA程式執行出現Exception in thread "main" java.lang.ArrayIndexOutOfBoundsEx

以前的學習筆記,整理一下: java程式碼的MapReduce打包成jar 報錯: JAVA程式執行時出現:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at PrintWhat.main(Pri

VB winsock傳送提示 "執行錯誤'40006'",我怎麼修改程式碼

這個方法是很好的,但是我在用的時候出現報錯: 引數不可選 然後我改成這樣 '判斷是否連線了,才傳送資料 j = 1 Do Until Winsock1.State = 7 Or j > 600 j =

1008 Elevator (20 分)陣列長度設定的重要性(PAT段錯誤+執行錯誤

這道題目簡單:先輸入這段序列的個數,然後依次輸入序列,計算從第0層開始走完這段序列需要的時間 下面是第一次提交的程式碼及結果: 嚇我一跳,“段錯誤”還行 改成下面的就通過了(差別就在int i

關於 C#呼叫一個C/C++dll執行實現多個應用(靜態變數區分) 的解決方法

需求         VS編寫了純C(windows)通訊庫,需要多例項(靜態變數標誌一個例項,達到互相靜態變數不干涉)。   當前問題         dll中使用了全域性static的標

機房收費系統登陸客戶端錯誤(二)執行錯誤“-2147217887”

解決了執行錯誤91之後可能還會出現這個錯誤,如圖: 什麼是OLE DB?OLEDB是微軟的戰略性的通向不同的資料來源的低階應用程式介面。OLE DB不僅包括微軟資助的標準資料介面開放資料庫連通性(ODBC)的結構化查詢語言(SQL)能力,還具有面向其他非SQL