一 图像处理函数
1. 图像载入:imread()
图像载入函数是imread()
,其原型如下。
Mat imread(const string& filename, intflag=1);
(1)第一个参数const string& filename
是需要载入的图像的路径;
(2)第二个参数intflag
用来标志加载图像的颜色类型,其中默认值是1,表示三通道的彩色图像。
2. 图像显示:imshow()
imshow()
函数用于在指定的窗口中显示一幅图像,其原型如下。
void imshow(const string& winname, InputArray mat);
(1)const string& winname
表示想要在窗口显示的名字;
(2)InputArray mat
则是要显示的图像。
3. 创建窗口:nameWindow()
这是一个用于创建窗口的函数,你也许会问这个活imshow()
不都干了吗?当需要在显示图像之前创建窗口时,就要用到这个函数了。其原型如下。
void nameWindow(const string& winname, int flags=WINDOW_AUTOSIZE);
(1)const string& winname
与imshow()
函数中对应参数的作用相同;
(2)int flags=WINDOW_AUTOSIZE
窗口类型标志,默认值是AUTOSIEZE
,表示自适应图像大小。
4. 输出图像到文件:imwrite()
输出图像到文件采用imwrite()
函数,其原型如下。
bool imwrite(const string& filename, InputArray img,const vector& params=vector());
(1)const string& filename
表示输出文件路径名,注意带上后缀;
(2)InputArray img
表示输入图像,一般是Mat
类型的图像数据;
(3)const vector<int>& params
表示为特定格式保存的参数编码,默认值是vector<int>()
,一般不需要填写。
二 示例代码
//实现图像混合功能
void picpro::mergepic()
{
Mat image_1 = imread("/Volumes/本地磁盘/Picture/头条号/影视/想见你/XJN-200206-20.png");
Mat image_2 = imread("/Volumes/本地磁盘/Picture/头条号/影视/想见你/XJN-200205-10.png");
Mat logo = imread("/Volumes/本地磁盘/Picture/头条号/LOGO/2.png");
namedWindow("想见你-002");
imshow("想见你-002", image_2);
namedWindow("Logo-003");
resize(logo, logo, Size(130,125));
imshow("Logo-003", logo);
namedWindow("image-001");
imshow("image-001", image_1);
//Rect rect1(800, 350, logo.cols, logo.rows);
Mat imageROI = image_2(Rect(110, 55, logo.cols, logo.rows));
addWeighted(imageROI, 0.5, logo, 0.3, 0.0, imageROI);
namedWindow("mergepic");
imshow("mergepic", image_2);
waitKey(0);
}
int main(int argc, const char * argv[]) {
picpro piccase;
piccase.mergepic();
system("pause");
return 0;
}
测试结果: