1.图像的载入、显示、和输出到文件
(1)Mat类:用于保存图像以及其他矩阵数据的数据结构。
(2)图像的载入:
Mat image=imread("图片名",flags)
flags>0 返回3通道彩色图像(一般为1);flags=0 返回灰度图像;flags<0返回Alpha通道的加载图像。
(3)图像的显示:
Mat girl=imread("girl.jpg"); //载入图像到Mat
namedWindow("【1】动漫图"); //创建一个名为 "【1】动漫图"的窗口
imshow("【1】动漫图",girl);//显示名为 "【1】动漫图"的窗口
(4)图像输出到文件
imwrite("由imwrite生成的图片.jpg",image);
(5)演示程序及分析
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main( )
{
//载入图片
Mat image= imread("dota.jpg",1);//一般为1
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,300,logo.cols,logo.rows));//logo左上角坐标,宽,高
//方法二
//imageROI= image(Range(350,350+logo.rows),Range(800,800+logo.cols));
// 将logo加到原图上
addWeighted(imageROI,0.5,logo,0.3,0.,imageROI);
//显示结果
namedWindow("【4】原画+logo图");
imshow("【4】原画+logo图",image);
imwrite("由imwrite生成的图片.jpg",image);
waitKey();
return 0;
}
(6)演示结果
2.滑动条创建及使用
char TrackbarName[50];
sprintf( TrackbarName, "透明值 %d", g_nMaxAlphaValue );//滑动条名称
createTrackbar( TrackbarName, WINDOW_NAME, &g_nAlphaValueSlider, g_nMaxAlphaValue, on_Trackbar );
//滑动条名称,依附窗口名称,当前值,最大值,调用函数
//结果在回调函数中显示
on_Trackbar( g_nAlphaValueSlider, 0 );
note:namedWindow("名称",flags)
flags=0 自适应大小 ;flags=1 固定大小
其回调函数
void on_Trackbar( int, void* )
{
//求出当前alpha值相对于最大值的比例
g_dAlphaValue = (double) g_nAlphaValueSlider/g_nMaxAlphaValue ;
//则beta值为1减去alpha值
g_dBetaValue = ( 1.0 - g_dAlphaValue );
//根据alpha和beta值进行线性混合
addWeighted( g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);
//显示效果图
imshow( WINDOW_NAME, g_dstImage );
}