视觉技术对于图像的读取、显示、(编辑)与保存

1、图像的加载(读取):

使用函数Mat cv::imread(const String& filename,//文件的路径名称

                             int flags=IMREAD_COLOR//以什么方式读取?彩色?灰度图?

                                           )

2、图像的显示:(有两个显示相关的函数)

//2-1、这个函数是你自己创建一个windows窗口,然后再使用imshow显示图片用。

void cv::namedWindow(const String& winname,//窗口名称,用作窗口的标识符

                                     int flags=WINDOW_AUTOSIZE //窗口属性设置标志窗口多大,是否自适                                                                                            应图像的大小 ,能否支持窗口的拖拽。

                                        )

注意:如果你使用autosize标识,那么当你要显示的图像过大时它只显示图像的一部分。

//2-2、真正的显示函数 

void cv::imshow(const String &winname,//要显示图像的窗口的名字,用字符串形式复制   

                                                                //当然,如果这个窗口是你用上边那个函数创建的

                                                                //那这里就写你创建的窗口的名字!

                             inputArray mat //要显示的图像矩阵

                            )

注意:4.0.0版本在创建窗口时nameWindow(),但是关闭的时候它没办法自动释放窗口资源的。还需要使用destroyWindow()。为了避免这种情况,其实我们直接使用imshow而不用上边的那个nameWindow也是可以的,因为inshow本身也有创建窗口的功能,因为它内部调用了nameWindow()

3、图像保存:

使用函数imwrite();

bool cv::imwrite(const String& filename,//新保存的图像的地址和文件名,包含图像格式

                                                                    注意新保存的图像的格式与源图像可以不一致。

                            inputArray img,//将要保存的Mat类矩阵变量

       const std::vector<int>& params=std::vector<int>()//保存图片格式属性设置标志。比如我们                                                                                            对图像进行一个压缩保存。默认的参数

                                                                                            是保存原图像的质量。

                            )

4、我们在查函数或者类的方法的时候

在技术文档主页一般点到function那,然后输入对应的函数,假如我想查:imread。输入并选中 imread cv。当我们点进去这个函数的时候,我们看第二个参数,我们不知道应该使用哪种宏,我们就点击一下这第二个参数,就可以看到这些宏的枚举。

比如:在读取图像时可以直接将彩色图像读取为灰度图的。

同样道理namewindow的参数和属性也是可以查看枚举宏的。

5、实战代码读取显示图片

#include<iostream>

#include<opencv2/opencv.hpp>//使用这个大的头文件可以将所有的opencv的头文件全都包含进去

using namespace std;

using namespace cv;

int main()

{

//创建一个Mat类,并读取图片数据

Mat img;

img = imread("C:\\Users\\神匠\\Desktop\\lena.jpeg", IMREAD_COLOR);//以彩色方式读取 

Mat gray= imread("C:\\Users\\神匠\\Desktop\\lena.jpeg", IMREAD_GRAYSCALE);//以灰度图方式读取

//创建用来显示的窗口

namedWindow("Color", WINDOW_AUTOSIZE);//窗口根据图片进行自调整

namedWindow("Gray",WINDOW_NORMAL);//窗口可以根据用户需求拖拽调整

//显示图像

imshow("Color", img);//注意在调试的时候,图像只是一闪就没了,因为这个imshow执行完之后,它会继续执行return

imshow("Gray", gray);//如果想让窗口保持,需要加一个waitkey(0);这个也是opencv提供的函数

//保存图像

vector<int> compression_params;

compression_params.push_back(IMWRITE_PNG_COMPRESSION);

compression_params.push_back(9);//压缩等级为9,这是官方文档中的示例代码

imwrite("C:\\Users\\神匠\\Desktop\\NEWlena.PNG", img, compression_params);//第一种保存为

压缩格式

imwrite("C:\\Users\\神匠\\Desktop\\NEW2lena.bmp", gray);//第二种保存为默认格式

waitKey();

return 0;

}

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神 匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值