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 图像加载和显示相关推荐

  1. 【C++的OpenCV】第三课-OpenCV图像加载和显示

    我们开始学习OpenCV 一.OpenCV加载图片和显示图片 1.1 imread()函数的介绍 1.2 cv::namedWindow()函数的介绍 1.4 imshow()函数介绍 1.5 Mat ...

  2. python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)

    python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录

  3. python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)

    python使用openCV图像加载(转化为灰度图像).使用filter2D函数对图像进行锐化(Sharpen Images) 目录

  4. python使用openCV图像加载(转化为灰度图像)、平滑图像处理就是将每个像素的值变换为其相邻元素的平均值、可视化平滑处理之后的图像(Blurring Images)

    python使用openCV图像加载(转化为灰度图像).平滑图像处理就是将每个像素的值变换为其相邻元素的平均值.可视化平滑处理之后的图像(Blurring Images) 目录

  5. OpenCV图像的加载、显示

    OpenCV图像的加载.显示 Mat类是OpenCV里使用广泛的一个类,使用它可以轻松的用几行代码实现图像的加载.显示. 先上代码: // OpenCV_self.cpp : 此文件包含 " ...

  6. OpenCv初学者学习笔记(一):图像视频的加载与显示

    目录 一.图像视频的加载与显示 1.1创建和显示窗口 1.2加载显示图片 1.3保存图片 1.4视频采集 1.5视频录制 1.1创建和显示窗口 cv2.namedWindow() 创建命名窗口 cv2 ...

  7. OpenCV初尝试1——图像视频的加载和显示

    1. 图像视频的加载和显示 第一次的内容比较基础,因为本人也是初学OpenCV甚至Python的基础都不是怎么好(之前一直在学Java). 当然首先需要准备好OpenCV的环境,这些一般B站讲Open ...

  8. 【OpenCV学习笔记之一】图像加载,修改及保存

    加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象 其中第一个参数表示图像文件名称 第二个参数 表示加载的图像是什么类型 支持常见的三个参数值 IMREAD_UNCH ...

  9. c++版本opencv(02-第一个OpenCV程序 03.图像加载与保存)

    c++版本opencv(02-第一个OpenCV程序) 一.02-第一个OpenCV程序 二,03.图像加载与保存 来自网易云课堂 一.02-第一个OpenCV程序 如果加载到了之后呢,我们就要对它进 ...

最新文章

  1. debian10 nfs简单搭建
  2. 安装和配置本地maven(三)
  3. Struts+Spring+Hibernate整合入门详解
  4. Linux下的inode记录
  5. linux下修改mac
  6. 故人的一份连连看代码,c语言版本
  7. 主流微服务注册中心浅析和对比
  8. 利用blink+MQ实现流计算中的超时统计问题
  9. 【Python】实现最大最小距离算法
  10. 实用的 Python 包 —— 使用 win32 的剪贴板
  11. POJ3461 【KMP(粗糙模板)】
  12. [转]何为C10K问题
  13. 【运维安全】Apache 服务器存在高危提权漏洞,请升级至最新版本 2.4.39
  14. 【特征提取】基于matlab倒谱距离端点检测【含Matlab源码 1767期】
  15. 海思Hi2115 NB-IOT资料,Hi2115芯片模块介绍
  16. 【Android】安卓开发中的MVP架构模式与应用实例
  17. React+Dva使用d3绘图
  18. KubeEdge环境搭建(支持网络插件flannel)
  19. SR综述论文阅读的一点点笔记
  20. 黑苹果oc清除nvram_基于OpenCore0.6.1的黑苹果安装,小白也能看

热门文章

  1. 一目了然了解JAVA集合体系
  2. iOS 相册和网络图片的存取
  3. javascript 方法实例
  4. centos防火墙端口配置
  5. 微信电视来了 微信遥控传屏弹幕统统有
  6. 【C++】【七】栈的实现
  7. SpringMVC集成Tiles布局引擎框架
  8. Redis源码分析-TCMalloc
  9. 静态分析C语言生成函数调用关系的利器——cflow
  10. Android.mk和Application.mk文件语法规范说明及举例