日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OpenCV3】图像的读取、显示与保存

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV3】图像的读取、显示与保存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV3和OpenCV2大同小異,圖片的讀取,通過函數cv::imread()來實現的;顯示通過函數cv::imshow()來實現;而保存則通過cv::imwrite()來實現。


1、圖片的讀取,通過函數cv::imread()讀取。

第一個參數為圖片文件的相對路徑或絕對路徑(注意:路徑一定要正確,同時也要確保文件的格式正確);

第二個參數為flag,cv::imread()支持的flag有:?

cv::IMREAD_COLOR(總是讀取到三通道數組中)、

cv::IMREAD_GRAYSCALE(讀取到單通道數組中)、

cv::IMREAD_ANYCOLOR(讀取的通道由具體的文件決定,最高3通道)、

cv::IMREAD_ANYDEPTH(允許讀取超過深度超過8位的圖像)、

cv::IMREAD_UNCHANGED(完全按照文件的原有形式進行讀取)、

默認情況下讀取3通道。

cv::Mat cv::imread(const string& filename, // Input filenameint flags = cv::IMREAD_COLOR // Flags set how to interpret file);

2、圖片的顯示使用的是cv::imshow()函數。

第一個參數為窗口的名稱,第二個參數為要顯示的圖片文件,也可以通過函數cv::namedWindow()先創建一個窗口供cv::imshow()使用。

void cv::imshow(const string& name, // Handle used to identify windowcv::InputArray image // Image to display in window );

3、圖片的保存,通過cv::imwrite()函數來實現。其中,第一個參數為保存目標文件的路徑名稱,圖片的類型通過路徑的后綴進行標識,opencv3支持寫圖片的類型有:

“.jpg”或“.jpeg”:基線JPEG;8位,單通道或3通道輸入。

“.jp2”:JPEG2000;8位或16位,單通道或3通道輸入。

“.tiff”或“tif”:TIFF;8位或16位,單通道、3通道或4通道輸入。

“.png”:PNG;8位或16位,單通道、3通道或4通道輸入。

“.bmp”:BMP;8位,單通道、3通道或4通道輸入。

“.ppm”或“pgm”:NetPBM;8位,單通道(PGM)或3通道(PPM)。

第二個參數,是圖像數據輸入,注意與寫圖片的類型匹配。

第三個參數,可選,用于參數化的類型,opencv3中支持的params如下:

cv::IMWRITE_JPG_QUALITY:表示JPEG的質量,取值范圍0-100,默認值為95;

cv::IMWRITE_PNG_COMPRESSION:PNG的壓縮率(值越高壓縮率越高),取值范圍0-9,默認值為3;

cv::IMWRITE_PXM_BINARY:使用二進制形式寫PPM、PGM、PBM文件,取值0或1,默認值1;


bool cv::imwrite(const string& filename, // Input filenamecv::InputArray image, // Image to write to fileconst vector<int>& params = vector<int>() // (Optional) for parameterized fmts);

最后,為了顯示保存的效果,使用了函數cvtColor將原圖從BGR彩色空間變換為灰度空間中的圖形(第三個變量表為flag,表示轉換前后的形式)。

從上看我們可以看出,OpenCV2系列中的flag的風格為CV_XXXX,而在OpenCV3中flag的定義風格均變為cv::XXXX)。


實現的具體代碼如下:

#include <opencv2/opencv.hpp>int main() {cv::Mat image, image_gray;image = cv::imread("lenna.jpg", cv::IMREAD_COLOR);cv::imshow("lenna", image);cv::cvtColor(image, image_gray, cv::COLOR_BGR2GRAY);cv::imwrite("lenna_gray.jpg", image_gray);cv::waitKey(0);return 0; }


結果:


顯示結果


寫結果




總結

以上是生活随笔為你收集整理的【OpenCV3】图像的读取、显示与保存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。