OpenCV:imwrite函數(shù)保存圖片問題
imwrite函數(shù)功能
用于將圖像保存到指定的文件,可以為各種格式的圖像。
函數(shù)原型
bool cv::imwrite(const String & filename, InputArray img, const std::vector<int> & params = std::vector<int>()? )??
函數(shù)參數(shù)
filename:需要保存圖像的文件名,要保存圖片為哪種格式,就帶什么后綴。img:要保存的圖像。params:表示為特定格式保存的參數(shù)編碼。
注意:
imwrite函數(shù)是基于文件擴展名選擇圖像的格式。通常,使用此功能只能保存8位單通道或3通道(帶有BGR通道順序)圖像,但有以下例外:
- 對于PNG,JPEG2000和TIFF格式,可以保存16位無符號(CV_16U)圖像。
- 32位浮點(CV_32F)圖像可以保存為PFM,TIFF,OpenEXR和Radiance HDR格式; 使用LogLuv高動態(tài)范圍編碼(每像素4個字節(jié))保存3通道(CV_32FC3)TIFF圖像
- 可以使用此功能保存帶有Alpha通道的PNG圖像。為此,創(chuàng)建8位(或16位)4通道圖像BGRA,其中alpha通道最后。完全透明的像素應該將alpha設置為0,完全不透明的像素應該將alpha設置為255/65535。
如果格式,深度或通道順序不同,請在保存之前使用Mat :: convertTo和cv :: cvtColor進行轉換?;蛘撸褂猛ㄓ?a rel="external nofollow" target="_blank">FileStorage I / O函數(shù)將圖像保存為XML或YAML格式。
編碼參數(shù)
| IMWRITE_JPEG_QUALITY Python:cv.IMWRITE_JPEG_QUALITY | 對于JPEG,它可以是從0到100的質量(越高越好)。默認值為95。 |
| IMWRITE_JPEG_PROGRESSIVE Python:cv.IMWRITE_JPEG_PROGRESSIVE | 啟用JPEG功能,0或1,默認為False。 |
| IMWRITE_JPEG_OPTIMIZE Python:cv.IMWRITE_JPEG_OPTIMIZE | 啟用JPEG功能,0或1,默認為False。 |
| IMWRITE_JPEG_RST_INTERVAL Python:cv.IMWRITE_JPEG_RST_INTERVAL | JPEG重啟間隔,0 - 65535,默認為0 - 無重啟。 |
| IMWRITE_JPEG_LUMA_QUALITY Python:cv.IMWRITE_JPEG_LUMA_QUALITY | 單獨的亮度質量等級,0 - 100,默認為0 - 不使用。 |
| IMWRITE_JPEG_CHROMA_QUALITY Python:cv.IMWRITE_JPEG_CHROMA_QUALITY | 單獨的色度質量等級,0 - 100,默認為0 - 不使用。 |
| IMWRITE_PNG_COMPRESSION Python:cv.IMWRITE_PNG_COMPRESSION | 對于PNG,它可以是從0到9的壓縮級別。值越高意味著更小的尺寸和更長的壓縮時間。如果指定,則策略更改為IMWRITE_PNG_STRATEGY_DEFAULT(Z_DEFAULT_STRATEGY)。默認值為1(最佳速度設置)。 |
| IMWRITE_PNG_STRATEGY Python:cv.IMWRITE_PNG_STRATEGY | 其中一個品種:: ImwritePNGFlags,默認為IMWRITE_PNG_STRATEGY_RLE。 |
| IMWRITE_PNG_BILEVEL Python:cv.IMWRITE_PNG_BILEVEL | 二進制級別PNG,0或1,默認為0。 |
| IMWRITE_PXM_BINARY Python:cv.IMWRITE_PXM_BINARY | 對于PPM,PGM或PBM,它可以是二進制格式標志,0或1.默認值為1。 |
| IMWRITE_EXR_TYPE Python:cv.IMWRITE_EXR_TYPE | |
| IMWRITE_WEBP_QUALITY Python:cv.IMWRITE_WEBP_QUALITY | 覆蓋EXR存儲類型(默認為FLOAT(FP32)) 對于WEBP,它可以是1到100的質量(越高越好)。默認情況下(不帶任何參數(shù)),如果質量高于100,則使用無損壓縮。 |
| IMWRITE_PAM_TUPLETYPE Python:cv.IMWRITE_PAM_TUPLETYPE | 對于PAM,將TUPLETYPE字段設置為為格式定義的相應字符串值。 |
| IMWRITE_TIFF_RESUNIT Python:cv.IMWRITE_TIFF_RESUNIT | 對于TIFF,用于指定要設置的DPI分辨率單位; 請參閱libtiff文檔以獲取有效值。 |
| IMWRITE_TIFF_XDPI Python:cv.IMWRITE_TIFF_XDPI | 對于TIFF,用于指定X方向DPI。 |
| IMWRITE_TIFF_YDPI Python:cv.IMWRITE_TIFF_YDPI | 對于TIFF,用于指定Y方向DPI。 |
| IMWRITE_TIFF_COMPRESSION Python:cv.IMWRITE_TIFF_COMPRESSION | 對于TIFF,用于指定圖像壓縮方案。請參閱libtiff以獲取與壓縮格式對應的整數(shù)常量。注意,對于深度為CV_32F的圖像,僅使用libtiff的SGILOG壓縮方案。對于其他支持的深度,可以通過此標志指定壓縮方案; LZW壓縮是默認值。 |
| IMWRITE_JPEG2000_COMPRESSION_X1000 Python:cv.IMWRITE_JPEG2000_COMPRESSION_X1000 | 對于JPEG2000,用于指定目標壓縮率(乘以1000)。該值可以是0到1000.默認值是1000。 |
示例代碼
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
cv::Mat srcImage;
//加載圖像
srcImage = cv::imread("image.jpg",1);
if (srcImage.empty())
{
std::cout << "圖像加載失敗!" << std::endl;
return -1;
}
cv::imshow("主窗口", srcImage);
//保存圖像到當前項目
cv::imwrite("save.jpg", srcImage);
cv::waitKey(0);
//銷毀所有窗口
cv::destroyAllWindows();
return 0;
}代碼結果


以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Django+Bootstrap實現(xiàn)計算器的示例代碼
本文主要介紹了Django+Bootstrap實現(xiàn)計算器的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
python創(chuàng)建exe文件的實現(xiàn)步驟
本文主要介紹了python創(chuàng)建exe文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09
windows+vscode安裝paddleOCR運行環(huán)境的步驟
這篇文章主要介紹了windows+vscode安裝paddleOCR運行環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
Python Tornado框架輕松寫一個Web應用的全過程
Tornado全稱Tornado Web Server,是一個用Python語言寫成的Web服務器兼Web應用框架,Tornado走的是少而精的方向,注重的是性能優(yōu)越,它最出名的是異步非阻塞的服務器方式,這篇文章主要給大家介紹了關于Python Tornado框架輕松寫一個Web應用的相關資料,需要的朋友可以參考下2021-08-08

