opencv 入门 (1)图像的载入、显示和输出

                    opencv 入门 (1)图像的载入、显示和输出

 图像的基本操作:

                          调用的函数

1. 图像读取         imread( )

2. 窗口创建         namedWindow( )

3. 图像显示         imshow( )

4. 图像保存         imwrite( )

5. 资源释放         destroyWindow( )  

示例程序:

#include"opencv2/imgproc/imgproc.hpp"
#include"opencv2/highgui/highgui.hpp"
using namespace cv;

void main()
{

Mat img1=imread("Lena.jpg");   //读取图片
cvtColor(img1,img1,CV_BGR2GRAY);   //转为灰度图
namedWindow("imgWindow");     //创建窗口
imshow("imgWindow",img1);    //显示图片
imwrite("img2.bmp",img1);    //保存结果图片
waitKey(0);                  //暂停按键 等待

}

这里简单地介绍了 使用opwncv 来读取图片,创建窗口,把图片放在窗口中显示,然后保存图片等。

扫描二维码关注公众号,回复: 3763705 查看本文章

补充知识(图像属性):

1. empty( )    判断文件读取是否正确

2. rows( )      获取图像地行数(高度)

3. cols( )       获取图像地列数(长度)

4. channels( )    获取图像通道数

5. depth( )     获取图像位深度

举例说明1:

Mat img=imread("Lena.jpg");
if(img.empty( ))   //如果读取地图片为空 ,异常处理
{
std::count<<"read image erroe!"

}

举例说明2:

Mat img=imread("Lena.jpg");
std::count<<"图像长度为:"<<img.cols;
std::count<<"图像宽度为:"<<img.rows;

如果有兴趣可以往下看,深入一点了解:

1.1  关于 OpenCV  的命名空间 

  OpenCV 中的 C++类和函数都是定义在命名空间 cv 之内的,有两种方法可以访问。第一种是,在代码开头的适当位置,加上 using name space cv; 这句。另外一种是在使用 OpenCV类和函数时,都加入 cv::命名空间。不过后者这种情况比较繁琐,所以使用第一种方法比较简单。在写简单的 OpenCV 程序的时候,如下这两句是标配:
#include <opencv2/opencv.hpp>
using namespace cv;


1.2  Mat  类型

  cv::Mat 类是用于保存图像以及其它矩阵数据的数据结构。默认情况下,其尺寸为 0,也可以指定初始尺寸。比如定义一个 Mat 类对象:cv::Mat pic(320,640,cv::Scalar(100));
对于本实验,需要用到关于 Mat 其实就简单的这样一句代码:   Mat myMat= imread("Test.jpg");
表示从工程目录下把一幅名为 Test.jpg 的图像载入到 Mat 类型的 myMat 中。这里的 imread函数将在下文介绍。

综合示例

综合示例主要完成载入图像,进行简单图像混合,显示图像,并且输出混合后的图像到JPG 文件。源代码如下

#include<opencv2/opencv.hpp>
using namespace cv;
int main()
{

//【一、图像的载入和显示】
// 描述:以下三行代码用于完成图像的载入和显示

Mat test00 = imread("lena.jpg");    //载入图像到Mat
namedWindow("lena");                //创建一个名为 "lena"的窗口
imshow("lena", test00);             //显示名为 "lena"的窗口

//【二、初级图像混合】

Mat image = imread("Baboon.jpg", 1);    //载入图片
Mat logo = imread("LOGO.jpg");

//载入后先显示
namedWindow("Baboon狒狒");
imshow("Baboon狒狒", image);
namedWindow("logo图");
imshow("logo图", logo);

//定义一个Mat类型,用于存放,图像的ROI
Mat imageROI;

imageROI = image(Rect(50, 50, logo.cols, logo.rows));  //方法一

//imageROI=image(Range(50,50+logo.rows),Range(50,50+logo.cols));  //方法二

addWeighted(imageROI, 0.5, logo, 0.5, 0.0, imageROI);  //将logo加到原图上

namedWindow("狒狒+logo图");  //显示结果
imshow("狒狒+logo图", image);


//【三、图像的输出】

imwrite("狒狒logo图.jpg", image);   //输出一张jpg图片到工程目录下
waitKey();
return 0;
}

对了补充说明一下,在建好地工程目录下,要放进相关地图片,程序才能正常执行.

运行这个程序,会弹出 4 个在 OpenCV 中创建的窗口,运行截图如图 1 所示:

希望对你有帮助。

猜你喜欢

转载自blog.csdn.net/qq_41204464/article/details/83540666