版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
文章目录
图像深度:是指存储每个像素所用的位数,也用于量度图像的色彩分辨率。
1. 图像的载入:imread()函数
用于读取文件中的图片到OpenCV中。
#include <opencv2/opencv.hpp> //头文件
using namespace cv; //包含cv命名空间
int main( )
{
// 【1】读入一张图片,载入图像
Mat srcImage = imread("1.jpg");
// 【2】显示载入的图片
imshow("【原始图】",srcImage);
// 【3】等待任意按键按下
waitKey(0);
return 0;
}
2. 图像的显示:imshow()函数
用于在指定的窗口中显示一幅图像。
3. 创建窗口:namedWindow()函数
namedWindow函数:通过指定的名字,创建一个可以作为图像和进度条的容器窗口。
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat img;
img = imread("1.jpg",1);//参数1:图片路径。参数2:显示原图
namedWindow("window1",CV_WINDOW_AUTOSIZE);
/*注释
参数1:窗口的名字
参数2:窗口类型,CV_WINDOW_AUTOSIZE 时表明窗口大小等于图片大小。不可以被拖动改变大小。
CV_WINDOW_NORMAL 时,表明窗口可以被随意拖动改变大小。
*/
imshow("window1",img);//在“window1”这个窗口输出图片。
waitKey(5000);//等待5秒,程序自动退出。改为0,不自动退出。
return 0;
}
4. 输出图像到文件: imwrite()函数
5. addWeighted()函数
函数是将两张相同大小,相同类型的图片融合的函数。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
Mat image = imread("dota.jpg");//载入图片,"dota.jpg"为工程目录下的文件
Mat logo = imread("dota_logo.jpg");
Mat imageROI;// 定义一个Mat类型,用于存放,图像的ROI,即图像的感兴趣区域
imageROI = image(Rect(800,350,logo.cols,logo.rows));
//指定图像的感兴趣区域,imageROI的数据与源图像image共享存储区,所以此后在imageROI上的操作也会作用在源图像image上
//imageROI= image(Range(350,350+logo.rows),Range(800,800+logo.cols));//亦可这么写
// 将logo加到原图上
addWeighted(imageROI,0.8,logo,0.2,0,imageROI);
//数组相加函数,imageROI为原数组,0.8为该数组权值,logo为另一个原数组,
//0.2为该数组权重,0为添加常数项,imageROI为输出目标数组,函数输出结果为:imageROI=imageROI*0.8+logo*0.2+0
namedWindow("原画+logo图");//显示结果
imshow("原画+logo图",image);
imwrite("由imwrite生成的图片.jpg",image);//输出一张jpg图片到工程目录下
waitKey();//等待用户输入任意键,在win32环境下可防止程序运行后一闪就退出
}