OpenCV圖像讀取和寫入


opencv默認讀入圖像的數據類型為 uchar 一個字節。

利用OpenCV的 imwrite 函數 可以將 uchar 8位 和 uint6_t 16位數據保存在 jpg 或 png圖像中。

CV_32F 數據可以保存為PFM,TIFF,OpenEXR和Radiance HDR格式

https://blog.csdn.net/mars_xiaolei/article/details/62233900

 

imwrite 可以定義數據的壓縮等級, void imwrite(string filename, Mat src, compression_params )

vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(0); // 無壓縮png.默認壓縮值為1

 

讀入深度圖像

imread(string filename, int flag);

默認讀入數據類型為 uchar,3通道, flag為1 (IMREAD_COLOR)。

若想讀入灰度圖(單通道、uchar類型),那么 flag 可以設置為 0(IMREAD_GRAYSCALE)

對於CV_16U的數據類型,需要注明是讀入任意深度數據,那么 flag 為2 (IMREAD_ANYDEPTH),此時還是三通道(每個通道均為相同的值)。

需要用 split 分離出單通道。

 

顯示圖像

imshow( string windowname, Mat src) 只能顯示 uchar 類型的圖像

對於 深度為 CV_16U 之類的數據需要先進行轉換,否則會報錯。

如下則可以:

cv::Mat temp;
src.convertTo(temp, CV_8UC1, 255.0 / 131071);
cv::equalizeHist(temp, temp); // 均衡化直方圖,讓圖像看起來更明顯
cv::imshow("image", temp);
cv::waitKey();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM