opencv圖像顯示imshow()源碼分析

無論什麼圖片格式,opencv最終都是以位圖形式進行圖片顯示,即以bmp圖像格式進行圖像顯示,bmp圖像由四部分組成:位圖文件頭、文圖信息頭、顏色表、位圖數據。顯示中的一個重要步驟就是將加載進來的Mat圖像轉換成bmp格式。下面就源碼展開,看看顯示過程,粘貼代碼如下:

跟蹤源碼,可以發現最終顯示函數仍舊是cvShowImage函數,繼續跟蹤下去,其源代碼如下:

Line1193,根據讀取到的圖像信息進行位圖數據結構相關成員進行賦值

Line1195,CreateDIBSection函數創建位圖,其中dst_ptr指針指向該位圖數據區域

Line1199,cvInitMatHeader函數對dst和dst_ptr進行內存區域關聯,數據區域共享

Line1201,cvConvertImage函數已將原始圖像cvMat類型變量image的相關數據拷貝到dst中了,也就相當dst_ptr指向的內存有位圖的數據了

Line1206,InvaliddateRect函數對窗體進行刷新,也就是對客戶窗口進行刷新,此時圖像便顯示在窗口上

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章