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 图像加载和显示
相关文章:

汇编语言第五到八章总结
第五章 [BX]和loop 1.内存单元间接表示: [bx] mov dl, [0]; dl ← ((ds)16 0) mov bx, 0 mov dl, [bx]; dl ← ((ds)16 (bx)) 可以使用bx间接访问内存单元。默认,段地址在ds。 2.loop指令 (1) 语法格式 loop 标号 (2) CPU执行指令过程 ① (cx) ← (cx) …

提醒参加北京Tech.Ed2007会议并在九华山庄上网的朋友注意!
今年的会议内容很是精彩,但是所住的九华山庄的网络却出现了一些问题。这在开心就好的博客里也有所提到,我想应该问题类似吧。表现是网络速度非常慢,网页经常需要刷新才能打开。首先给大家看几个截图:我想做安全的朋友应该都很熟悉…

计算一下你的“手指率”
去年,Psytopic发布过《女子赛跑,看无名指长短就能知晓比赛结果》一个由英国伦敦大学医学专家得出的近乎“迷信”的结论,最近又有一项类似的研究结论:通过测算“手指率”(digitratio,食指长度除以无名指长度…

Linux的常用命令!
文章目录1. linux常用命令的基本使用2. 目录(文件夹)常用命令2.1 创建文件夹的命令2.2 删除文件夹的命令(谨慎使用,谨慎使用,谨慎使用)2.3 修改文件夹的命令改变位置:mv 就路径 新路径ÿ…

性能测试八:jmeter进阶之beanshell
* BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; * BeanShell是一种松散类型的脚本语言(这点和JS类似); * BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文…

海量数据系统之道
-------------------------------------------------------------------------------------------------------------------------------------------- 今天先到这儿,希望对您在系统架构设计与评估,团队管理, 项目管理, 产品管理 有参考作用 , 您可能感兴趣的文章: …

char与varchar的区别
Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节 char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节 Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是&…

Print Model SQL
凭证模块INSERT INTO RDOCSELECT *FROM db001.dbo.RDOCWHERE (DocCode JDT20024)goINSERT INTO RITMSELECT *FROM db001.dbo.RITMWHERE (DocCode JDT20024)go记得修改相应的表明和doccode(打印格式的编号,打开打印格式属性就可以看到了)模板名称保存在RDOC表中,而…

Python3模块Crypto改为pycryptodome
安装: # 安装方式1: pip3 install pycryptodome# 安装方式2: pip3 install -i https://pypi.douban.com/simple pycryptodome from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash import SHA256 转…

反射调用索引器
反射一个类型中的成员,可得到如、、 或 等信息,这些对象从字面上看似乎很难发现有跟索引器对得上的.但是仔细分析索引器的本质,其实索引器是被归类为属性的,即可以通过 Code1 Type genericType typeof(Dictionary<,>); 2 3 Type dictionaryType genericType…

VM虚拟机报错:An error occurred during the file system check.
VM虚拟机开机时遇到以下错误: 问题原因:在上一次VM虚拟机关机后,移除了某个硬件设备,但是在上一次开机时已经设置了永久挂载,没有在配置文件中将被移除的硬件设备信息删除掉,所以在下一次虚拟机启动时,找不…

sqlserver 2014使用时有Cannot find one or more components
好久没用sqlserver,今天打开却出现了一个错误,Cannot find one or more components,令人头疼。在启动Microsoft SQL Server Management Studio时,出现上面的错误提示,程序无法启动.在网搜了一下,发现遇到这样错误的人也不少,但是给出的大部分办法是删除注…

linux下的重要服务dns
首先谢谢版主帮我解决了图片上传问题,要不然这篇文章还真没办法做,呵呵.上一篇己较详细的讲解了LINUX下的DNS配置。因为LINUX下的DNS配置还是有点麻烦的,虽说前面讲那么多,但还是有些没提到的地方,下面将我自己配置的DNS拿出来跟大家一起分享…

MapReduce编程初体验
需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop hello,hive,sqoop,flume kitty,tom,jerry,world hadoo…

傻傻分不清的javascript运行机制
学习到javascript的运行机制时,有几个概念经常出现在各种文章中且容易混淆。Execution Context(执行环境或执行上下文),Context Stack (执行栈),Variable Object(VO: 变量对象),Active Object(AO: 活动对象),LexicalEn…

SVN linux 服务器端配置
一. SVN 简单介绍Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库非常像一个普通的文件server, 只是它会记住每一次文件的变动。 这样你就能够把档案恢复到旧的版本…

用C++开发Web应用
表现: XHTML/CSS/Javascript 库:Extjs 逻辑/服务器端:C CGI/Fastcgi 库:Wt Boost 数据库:MySQL/XML Web应用计划项目: Web DesktopSoft RobotWeb Instant MessageWeb Office SuitWeb IDE(compiler,…

C#2.0实例程序STEP BY STEP--实例二:数据类型
C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int,char和float等,还包括比较复杂的类型,例如内部的string类型和表示货币值的decimal类型。而且&am…

注解--python库--matplotlib
import matplotlib.pyplot as plt import numpy as npx np.linspace(-3, 3, 50) y 2*x 1plt.figure(num1, figsize(8, 5),) plt.plot(x, y,)ax plt.gca() ax.spines[right].set_color(none)#右边框为空 ax.spines[top].set_color(none)#上边框为空 ax.xaxis.set_ticks_posi…

Parallels Desktop 重装系统
安装教程,大家可以在网上找找 现在我想重装系统,怎么弄呢? 1、~/Documents/Parallels 目录下那个PVM后缀的文件直接删除 2、重装找开虚拟机,会弹出一个框,说找不到系统,点击删除。 3、之后重新安装即可。 转…

用tcpdump查看端口包
例如tcpdump -X -s1600 -i eth1 dst port 20072 -wdump.dat 特别注意-s的使用,不使用该参数,则只会接收默认大小的一个数据包,我机器上是42b 得到的数据包可以通过Ethereal软件查看详细包结构和内容。 很好用! 转载于:https://ww…

Caught exception java.lang.interruptedException(在集群上进行多个文件合并压缩时出错)
问题:将mapreduce程序打成JAR包提交给yarn集群,用hadoop命令启动后发现报以下错误: 原因:经检查后发现少了这一行代码,此代码的作用是通过传入的class,找到job的JAR包。 解决方法:添上此行代码,…

是北京晚报!不,是中国最大的讽刺!!!
转载请注明出处:[url]http://technet.blog.51cto.com/[/url],这还是很久以前写的呢,今天无意翻出来了,发上来与大家共享.是北京晚报!不,是中国最大的讽刺!!! 昨天在北大青鸟上完课,坐车回家,因要2个小时的车程,怕闲来无聊&…

nomn文件分析
#encodinggbk import os import re import math from os import path 手动输入文件nmon文件路径,要截取的开始时间,结束时间 rootdirE:\\pylianxi\\ceshi #input("请输入文件路径:") start_time"14:46" #截取的…

Vmware Workstation VMX 在资源管理器中杀不掉(虚拟机繁忙导致无法关机)
使用vmware的时候出现 虚拟机繁忙 的情况导致无法关机,然后使用任务管理器结束vmware进程,之后却发现在资源监视器中有一个VMware Workstation VMX进程始终关不掉,获得管理员权限去杀或者重启都没有用。 解决办法:打开win10的应用…
BGA封装芯片手工焊接攻略
转载于:http://blog.sina.com.cn/s/blog_70bb32080100lx1y.html 我毕设的很多板上都有BGA芯片,刚开始我觉得这东西实在是没有办法焊接。幸运的是我们研究所的另外一个研究室花了30多万买了个BGA焊接设备,我去蹭了2次,可惜要看人家…

40个常用的网站制作技巧
1. οncοntextmenu "window.event.returnValuefalse " 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)> <td> no </table> 可用于Table 2. <body onselectstart "return false "> 取消选取…

[Flash开发笔记] 如何在as2.0中使用自定义类事件
as2编程中,我们通常要处理一些异步加载的数据,有点类似ajax中的callback,即我们不知道何时数据才会返回,并且只有当数据返回时,执行我们定义的操作。在flash6及以前,我们会常常碰到从外部加载一张图片或一段…

.NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
.NET导出报表一般是采用导出Excel报表的方式输出内容。而这又分为两种方式:使用Excel模板方式和使用网页输出Excel格式两种。首先介绍简单的一种,网页输出Excel内容,这种不需要引用Excel的程序集。/**//// <summary> /// 报表导出辅…

从应用到内核查接口超时(中)
应用复现 接着上文 从应用到内核查接口超时(上) 继续排查导致接口超时的原因。 转载随意,文章会持续修订,请注明来源地址:https://zhenbianshu.github.io 。 Jdk 的 native 方法当然不是终点,虽然发现 Jdk、…