1图像简单显示与保存

参考1图像简单显示与保存,做自己的笔记

Mat类简单介绍

Mat类可以用来保存图像以及其他矩阵数据的数据结构,默认情况下其尺寸为0。更详细的将会在以后的文章中继续介绍。

读入图像:imread()函数

Mat imread( const String& filename, int flags = IMREAD_COLOR );

第一个参数:放入打算读入的图像的路径。

这里有三点要值得注意的地方,①要用” ”双引号(英文下)将路径括起来。②路径见要用两个斜线\\分割。③要记得图像格式别忘记写。


上图中,第一种写法,即图像在当前项目文件夹中;

其中这个路径:

cv::Mat cv::imread(
    const &string filename,
    int flags=1)
//文件在当前目录下
Mat img=imread("test.jpg");
//不在当前目录
//使用双反斜杠
img=imread("folder\\folder2\\test.jpg");
img=imread("c:\\images\\test.jpg");
//或使用单斜杠
img=imread("folder/folder2/test.jpg");
img=imread("c:/images/test.jpg");
双反斜杠和单斜杠都是合法的

第二张为:自定义图像的路径。

第二个参数:默认值是1,表示的是载入三通道彩色图像。

Mat imread( const String& filename, int flags )
{
    /// create the basic container
    Mat img;

    /// load the data
    imread_( filename, flags, LOAD_MAT, &img );

    /// return a reference to the data
    return img;
}

显示图像:imshow()函数

void imshow(const String& winname, InputArray mat);
第一个参数:显示窗口名称。
第二个参数:将要显示的图像的名称。
Mat img = imread("D:\\demo01.jpg");
imshow("pp的靓照", img);

保存图像:imwrite()函数

bool imwrite( const String& filename, InputArray img, const std::vector<int>& params = std::vector<int>());
第一个参数:将要另保存图像的名称,可以自己定义名称。
第二个参数:你要要保存的图像名称,是目前已经存在的图像。
第三个参数:来设置对于图像格式的参数,一般省略,不写。
具体代码:
bool imwrite( const String& filename, InputArray _img,
              const std::vector<int>& params )
{
    Mat img = _img.getMat();
    return imwrite_(filename, img, params, false);
}
//=============================================
//功能:图像显示与保存
//2018年4月15日9:19:39
//=============================================

#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;

int main()
{
	//【1】读取原始图像
	Mat srcImage;
	//srcImage = imread("demo01.jpg", IMREAD_COLOR);//第一个参数为要读入的图像;第二个参数默认值为1,即IMREAD_COLOR,这个参数可以省略不写;
	srcImage = imread("demo01.jpg");
	//【2】检查是否读取图像成功
	if (srcImage.empty())
	{
		cout << "读取图像有误,请重新输入正确路径!\n";
		return -1;
	}
	//【3】创建具有图像名称的窗口
	namedWindow("原始图", WINDOW_AUTOSIZE);
	//【4】在窗口中显示图片
	imshow("原始图", srcImage);
	//【5】保存图像
	imwrite("保存的图像.jpg", srcImage);
	//【6】保持等待状态
	waitKey();//括号里可以填任意正整数,意味着,图像显示的毫秒时间
	return 0;
}

注意:

还是老话题,2.2版本对OpenCV可是进行了大刀阔斧的改革,用c++重新了大部分结构,而不是1.X版本中的c结构。这些模块包括:

core——定义了基本数据结构,包括最重要的Mat和一些其他的模块

imgproc——该模块包括了线性和非线性的图像滤波,图像的几何变换,颜色空间转换,直方图处理等等

video——该模块包括运动估计,背景分离,对象跟踪

calib3d——基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建

features2d——显著特征检测,描述,特征匹配

objdetect——物体检测和预定义好的分类器实例(比如人脸,眼睛,面部,人,车辆等等)

highgui——视频捕捉、图像和视频的编码解码、图形交互界面的接口

gpu——利用GPU对OpenCV模块进行加速算法

ml——机器学习模块(SVM,决策树,Boosting等等)

flann——Fast Library for Approximate Nearest Neighbors(FLANN)算法库

legacy——一些已经废弃的代码库,保留下来作为向下兼容

还有一些其他的模块,比如FLANN算法库、Google测试包、Python bingdings等等。


阅读更多
个人分类: Opencv
上一篇利用MFC写一个计时器小程序
下一篇2图像彩色空间转换,RGB转灰度图等。cvtColor()函数
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭