精通人脸识别03:图像显示
opencv用来显示图片:Mat类及其类的方法进行处理、imread函数、namedWindow函数、imshow函数、imwrite函数、waitKey()
1)Mat类型 主要用来存放图像的数据结构
Mat myMat= imread("dota.jpg");
2)imread函数 用来读取图像的,其原型:
Mat imread(const string& filename, intflags=1 );
第一个参数:图片路径名
第二个参数:自带缺省值1
CV_LOAD_IMAGE_UNCHANGED(-1,忽略)
CV_LOAD_IMAGE_GRAYSCALE(0,图像转换成灰度1)
CV_LOAD_IMAGE_COLOR(1,彩色)
CV_LOAD_IMAGE_ANYDEPTH(2)
CV_LOAD_IMAGE_ANYDEPTH(4)
Mat image0 = imread ( "boy.png" , CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR );//载入最真实的图像 Mat imagel = imread ( "boy.png" , 0); //载入灰度图 Mat image2 = imread ( "boy.png" ,199 ); //载入3通道的彩色图像 Mat image3 = imread ( "boy.png"); //载入3通道的彩色图像
3)namedWindow函数 用于创建一个空的窗口,后续可以利用这个窗口句柄来显示图片,目前已被imshow替代。
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
第一个参数:窗口的命名
第二个参数:WINDOW_NORMAL(没有限制)
WINDOW_AUTOSIZE(自动调整,不能手动,默认值)
WINDOW_OPENGL(窗口创建的时候便会支持OpenGL)
namedWindow("boy");
4)imshow函数 显示一幅图像,原型为:
void imshow(const string& winname, InputArray mat);
第一个参数:填需要显示的窗口标识名称
第二个参数:填需要显示的图像
imshow("boy",image);
5)imwrite函数 输出图像到文件,原型为:
bool imwrite(const string& filename,InputArray img, const vector<int>& params=vector<int>() );
第一个参数:填需要写入的文件名,带上后缀
第二个参数:填一个Mat类型的图像数据
第三个参数:一般不用填
imwrite("我喜欢打dota2 .jpg",image);
6)waitKay()
原型为int waitKey(int delay = 0)
,其中delay
的单位是毫秒
,表示显示图片的时间,如果delay=0
表示一直显示图片。
一个综合的示例:
#include <opencv2/imgproc/imgproc.hpp>
#include "opencv2/imgproc/types_c.h"
#include <opencv2/highgui.hpp>
using
namespace
cv;
int
main( )
{
Mat girl=imread(
"girl.jpg"
);
//载入图像到Mat
namedWindow("【1】动漫图"); //创建一个名为 "【1】动漫图"的窗口
imshow("【1】动漫图",girl);//显示名为 "【1】动漫图" 的窗口
//载入图片
Mat image= imread(
"dota.jpg"
,199);
Mat logo= imread(
"dota_logo.jpg"
);
//载入后先显示
namedWindow("【2】原画图");
imshow("【2】原画图",image);
namedWindow("【3】logo图");
imshow("【3】logo图",logo);
//定义一个Mat类型,用于存放,图像的ROI
Mat imageROI;
//方法一
imageROI=image(Rect(800,350,logo.cols,logo.rows));
//方法二
//imageROI=image(Range(350,350+logo.rows),Range(800,800+logo.cols));
//将logo加到原图上
addWeighted(imageROI,0.5,logo,0.3,0.0,imageROI);
//显示结果
namedWindow(
"【4】原画+logo图"
);
imshow(
"【4】原画+logo图"
,image);
//-----------------------------------【三、图像的输出】--------------------------------------
//输出一张jpg图片到工程目录下
imwrite(
"我喜欢打dota2 .jpg"
,image);
waitKey();
return
0;
}