opencv的命名空间
#include<opencv2\core\core.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace cv;
图像的载入:imread()函数
Mat imread(const string& filename,int flag=1);
(1) 第一个参数,const string&类型的filename,填我们需要载入的图片路径名。在Windows系统下,OpenCV的imread函数支持如下类型的图像载入。
- Windows位图: *.bmp,*.dib;
- JPEG文件:*.jpep,.jpg,.jpe;
- JPEG 2000 文件:*.jp2;
- PNG 图片:*.png;
- 便携文件格式:*.pbm,*.pbm,*ppm;
- Sun rasters 光栅文件:*.sr,*.ras;
- TIFF文件:*.tiff,*.tif。
(2) 第二个参数,int类型的flags,为载入标识,它指定一个在家图像大的颜色类型。可以看到它自带默认值1,所以这个参数在有些时候可以忽略。忽略这个参数的话,表示载入图象是三通道的彩色图像,这个参数可以子在OpenCV中标识图像格式的枚举体中取值。
举例:
Mat image0=imread("1.jpg",2|4);
Mat iamge1=imread("1.jpg",0);
Mat image2=imread("1.jpg",199);
图像的显示:imshow函数
void imshow(const string& winname,ImputArray mat);
- 第一个参数:填需要显示的窗口的标识名称;
- 第二个参数:填需要显示的图像。
imshow函数用于在指定的窗口中显示图像。如果窗口使用CV_WINDOW_AUTOSIZE标志创建的,那么显示图像原始的大小。否则将图像进行缩放以适应窗口。而imshow缩放函数,取决于图像的深度。
创建窗口:namedWindow()函数
void namedWindow(cons string& winname,int flags=WINDOW_AUTOSIZE);
- 第一个参数:被作用窗口的标识符名称;
- 第二个参数:窗口的标识。(WINDOW_NORMAL,WINDOW_AUTOSIZE,WINDOW_OPENGL)
输出图像到文件:imwrite()函数
bool imwrite(const string& filename,InputArray img,const vector<int>& params=vector<int>());
第一个参数:文件名;
第二个参数:一般填一个Mat类型的图像数据;
第三个参数:特定格式保存的参数代码。
- 对于JPEG的图片,这个参数为0到100的图片质量,默认值为95;
- 对于PNG的图片,这个参数表示压缩级别,从0到9,默认值为3;
- 对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志,取值为0或1,默认值为1。
【示例程序】
imwrite函数的用法:
#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.rows - 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;
compression_params.push_back(CV_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;
}