opencv(10) HighGUI图形用户界面初步

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;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值