OpenCV輸出圖像到文件:imwrite()函數。在OpenCV中生成一幅png圖片,並寫入當前工程目錄

關於VS下OpenCV的配置。可見如下鏈接:
OpenCV的安裝與實現VS環境設置

在OpenCV中,輸入圖像到文件一般採用imwrite函數,它的聲明如下:

CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
              const std::vector<int>& params = std::vector<int>());
  1. 第一個參數,const String&類型的 filename填需要寫入的文件名。注意帶上後綴,如:***.jpg
  2. 第二個參數,InputArray 類型的img,一般填一個Mat類型的圖像數據。
  3. 第三個參數,const std::vector& 類型的params,表示爲特定格式保存的參數編碼。它有默認值vector(),所以一般情況下不需要填寫。在這裏插入圖片描述
    imwrite函數用於將圖像保存到指定的文件。圖像格式是基於文件擴展名的,可保存的擴展名和imread中可以讀取的圖像擴展名一致。

下面是一個示例程序,講解imwrite函數的用法。在OpenCV中生成一幅png圖片,並寫入當前工程目錄下:

#include<opencv2/opencv.hpp>
#include<vector>
using namespace cv;
using namespace std;

void createAlphaMat(Mat &mat){
	for (int i = 0; i < mat.rows; i++){
		for (int j = 0; j < mat.cols; j++){
			Vec4b&rgba = mat.at<Vec4b>(i, j);
			rgba[0] = UCHAR_MAX;
			rgba[1] = saturate_cast<uchar>((float(mat.cols - j)) / ((float)mat.cols)*UCHAR_MAX);
			rgba[2] = saturate_cast<uchar>((float(mat.cols - i)) / ((float)mat.rows)*UCHAR_MAX);
			rgba[3] = saturate_cast<uchar>(0.5*(rgba[1] + rgba[2]));
		}
	}
}

int main() {
	//創建帶Alpha通道的Mat
	Mat mat(480, 640, CV_8UC4);
	createAlphaMat(mat);

	vector<int>compression_params;
	//opencv3
	compression_params.push_back(IMWRITE_PNG_COMPRESSION);
	compression_params.push_back(9);

	try {
		imwrite("透明Alpha值圖.png", mat, compression_params);
		imshow("生成的PNG圖", mat);
		fprintf(stdout, "PNG圖片文件的alpha數據保存完畢~\n可以在工程目錄下查看由imwrite函數生成的圖片\n");
		waitKey(0);
	}
	catch (runtime_error&ex) {
		fprintf(stderr, "圖像轉換成PNG格式發生錯誤:%s\n", ex.what());
		return 1;
	}
	return 0;
}

運行之後可以發現在工程目錄下生成一張名爲“透明Alpha值圖.png”的圖片文件。
我們也給它進行顯示:
在這裏插入圖片描述
在這裏插入圖片描述

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