關於VS下OpenCV的配置。可見如下鏈接:
OpenCV的安裝與實現VS環境設置
在OpenCV中,輸入圖像到文件一般採用imwrite函數,它的聲明如下:
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
const std::vector<int>& params = std::vector<int>());
- 第一個參數,const String&類型的 filename填需要寫入的文件名。注意帶上後綴,如:***.jpg
- 第二個參數,InputArray 類型的img,一般填一個Mat類型的圖像數據。
- 第三個參數,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”的圖片文件。
我們也給它進行顯示: