OpenCV 图像加载和显示
OpenCV 图像加载和显示
- OpenCV 图像加载和显示
- 加载图像(使用cv :: imread)
- 创建一个名为OpenCV的窗口(使用cv :: namedWindow)
- 在OpenCV窗口中显示图像(使用cv :: imshow)**
- 说明
- 注意事项
- 最后
- 结果
OpenCV 图像加载和显示
加载图像(使用cv :: imread)
创建一个名为OpenCV的窗口(使用cv :: namedWindow)
在OpenCV窗口中显示图像(使用cv :: imshow)**
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{String imageName( "../data/HappyFish.jpg" ); // by defaultif( argc > 1){imageName = argv[1];}Mat image;image = imread( imageName, IMREAD_COLOR ); // Read the fileif( image.empty() ) // Check for invalid input{cout << "Could not open or find the image" << std::endl ;return -1;}namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.imshow( "Display window", image ); // Show our image inside it.waitKey(0); // Wait for a keystroke in the windowreturn 0;
}
说明
在OpenCV 2中,我们有多个模块。每个人负责处理不同的区域或方法。您可以在这些教程本身的用户指南的结构中观察到这一点。在您使用其中任何一个之前,您首先需要包含声明每个单独模块内容的头文件。
你几乎总是最终使用:
核心部分,这里定义了图书馆的基本构建块
highgui模块,因为它包含输入和输出操作的功能
#include < opencv2 / core.hpp >
#include < opencv2 / imgcodecs.hpp >
#include < opencv2 / highgui.hpp >
#include <iostream>
#include <string>
我们还包括iostream,以方便控制台线路输出和输入。为了避免与其他库的数据结构和函数名冲突,OpenCV有自己的命名空间:cv。为了避免在每个这些cv ::关键字之前附加需要,您可以使用以下行在整个文件中导入命名空间:
using namespace cv;
对于STL库也是如此(用于控制台I / O)。现在,我们分析一下主要功能。我们开始确保从命令行获取有效的图像名称参数。否则默认拍照:“HappyFish.jpg”。
String imageName( "../data/HappyFish.jpg" ); // by defaultif( argc > 1){imageName = argv[1];}
然后创建一个Mat对象,它将存储加载的图像的数据。
Mat image;
现在我们调用加载第一个参数(argv [1])指定的映像名称的cv :: imread函数。第二个参数指定了我们想要的图像的格式。这可能是:
IMREAD_UNCHANGED(<0)按原样加载图像(包括alpha通道(如果存在)
IMREAD_GRAYSCALE(0)将图像作为强度加载
IMREAD_COLOR(> 0)以RGB格式加载图像image = imread( imageName, IMREAD_COLOR ); // Read the file
注意事项
OpenCV支持图像格式Windows位图(bmp),便携式图像格式(pbm,pgm,ppm)和Sun光栅(sr,ras)。在插件的帮助下(您需要指定使用它们,如果您建立自己的库,但是在我们出货的包中,默认情况下)您也可以加载像JPEG(jpeg,jpg,jpe),JPEG 2000(jp2 - 代号为CMake的Jasper),TIFF文件(tiff,tif)和便携式网络图形(png)。此外,OpenEXR也是一种可能性。
检查图像数据是否正确加载后,我们要显示图像,因此我们使用cv :: namedWindow函数创建一个OpenCV窗口。创建OpenCV后,它们将自动进行管理。为此,您需要指定其名称,以及如何从大小角度处理其包含的图像的更改。可能是:
如果不使用Qt后端,WINDOW_AUTOSIZE是唯一支持的。在这种情况下,窗口大小将占据显示的图像的大小。不允许调整大小!
WINDOW_NORMAL在Qt你可以使用它来允许窗口调整大小。图像将根据当前窗口大小自行调整大小。通过使用| 操作员还需要指定是否希望图像保持其宽高比(WINDOW_KEEPRATIO)(WINDOW_FREERATIO)。
namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
最后
要使用新的图像更新OpenCV窗口的内容,请使用cv :: imshow函数。指定要更新的OpenCV窗口名称和此操作期间要使用的映像:
imshow( "Display window", image ); // Show our image inside it.
因为我们希望我们的窗口被显示直到用户按下一个键(否则程序会结束太快),所以我们使用cv :: waitKey函数,其唯一的参数是等待用户输入需要多长时间毫秒)。零意味着永远等待。
waitKey(0); // Wait for a keystroke in the window
结果
编译代码,然后运行可执行文件,将图像路径作为参数。如果你在Windows上,可执行文件当然也会包含一个exe扩展名。当然确保图像文件靠近你的程序文件。
./DisplayImage HappyFish.jpg
你应该得到一个漂亮的窗口,如下所示:
OpenCV 图像加载和显示
OpenCV 图像加载和显示相关推荐
- 【C++的OpenCV】第三课-OpenCV图像加载和显示
我们开始学习OpenCV 一.OpenCV加载图片和显示图片 1.1 imread()函数的介绍 1.2 cv::namedWindow()函数的介绍 1.4 imshow()函数介绍 1.5 Mat ...
- python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)
python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录
- python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)
python使用openCV图像加载(转化为灰度图像).使用filter2D函数对图像进行锐化(Sharpen Images) 目录
- python使用openCV图像加载(转化为灰度图像)、平滑图像处理就是将每个像素的值变换为其相邻元素的平均值、可视化平滑处理之后的图像(Blurring Images)
python使用openCV图像加载(转化为灰度图像).平滑图像处理就是将每个像素的值变换为其相邻元素的平均值.可视化平滑处理之后的图像(Blurring Images) 目录
- OpenCV图像的加载、显示
OpenCV图像的加载.显示 Mat类是OpenCV里使用广泛的一个类,使用它可以轻松的用几行代码实现图像的加载.显示. 先上代码: // OpenCV_self.cpp : 此文件包含 " ...
- OpenCv初学者学习笔记(一):图像视频的加载与显示
目录 一.图像视频的加载与显示 1.1创建和显示窗口 1.2加载显示图片 1.3保存图片 1.4视频采集 1.5视频录制 1.1创建和显示窗口 cv2.namedWindow() 创建命名窗口 cv2 ...
- OpenCV初尝试1——图像视频的加载和显示
1. 图像视频的加载和显示 第一次的内容比较基础,因为本人也是初学OpenCV甚至Python的基础都不是怎么好(之前一直在学Java). 当然首先需要准备好OpenCV的环境,这些一般B站讲Open ...
- 【OpenCV学习笔记之一】图像加载,修改及保存
加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象 其中第一个参数表示图像文件名称 第二个参数 表示加载的图像是什么类型 支持常见的三个参数值 IMREAD_UNCH ...
- c++版本opencv(02-第一个OpenCV程序 03.图像加载与保存)
c++版本opencv(02-第一个OpenCV程序) 一.02-第一个OpenCV程序 二,03.图像加载与保存 来自网易云课堂 一.02-第一个OpenCV程序 如果加载到了之后呢,我们就要对它进 ...
最新文章
- debian10 nfs简单搭建
- 安装和配置本地maven(三)
- Struts+Spring+Hibernate整合入门详解
- Linux下的inode记录
- linux下修改mac
- 故人的一份连连看代码,c语言版本
- 主流微服务注册中心浅析和对比
- 利用blink+MQ实现流计算中的超时统计问题
- 【Python】实现最大最小距离算法
- 实用的 Python 包 —— 使用 win32 的剪贴板
- POJ3461 【KMP(粗糙模板)】
- [转]何为C10K问题
- 【运维安全】Apache 服务器存在高危提权漏洞,请升级至最新版本 2.4.39
- 【特征提取】基于matlab倒谱距离端点检测【含Matlab源码 1767期】
- 海思Hi2115 NB-IOT资料,Hi2115芯片模块介绍
- 【Android】安卓开发中的MVP架构模式与应用实例
- React+Dva使用d3绘图
- KubeEdge环境搭建(支持网络插件flannel)
- SR综述论文阅读的一点点笔记
- 黑苹果oc清除nvram_基于OpenCore0.6.1的黑苹果安装,小白也能看