当前位置: 首页 > news >正文

信誉好的大良网站建设南京seo域名

信誉好的大良网站建设,南京seo域名,免费logo图标在线制作 设计,php wordpress面试题我们开始学习OpenCV一、OpenCV加载图片和显示图片1.1 imread()函数的介绍1.2 cv::namedWindow()函数的介绍1.4 imshow()函数介绍1.5 Mat容器介绍二、 代码实例(带注释)2.1 代码2.2 执行结果一、OpenCV加载图片和显示图片 本章节中,将会学习到…

我们开始学习OpenCV

  • 一、OpenCV加载图片和显示图片
    • 1.1 imread()函数的介绍
    • 1.2 cv::namedWindow()函数的介绍
    • 1.4 imshow()函数介绍
    • 1.5 Mat容器介绍
  • 二、 代码实例(带注释)
    • 2.1 代码
    • 2.2 执行结果

一、OpenCV加载图片和显示图片

本章节中,将会学习到:

  • 加载图像(cv::imread()函数)
  • 创建一个图像显示的窗口(cv::namedWindow()函数)
  • 在窗口中显示图片(cv::imshow()函数)

1.1 imread()函数的介绍

Mat image;
image = imread( imageName, IMREAD_COLOR ); // Read the file
  • 功能介绍:
            从指定路径中读取所选择的图像

  • 参数解释:

    • Mat image:
          image是一个Mat的对象。
          Mat是一种OpenCV中的图像存储的容器(稍后我们将会展开和大家介绍Mat的详细信息,请先往后看)
    • IMREAD_COLOR:
          这是一个普通的宏,表示图像对象的色彩通道的模式。 有三种选择:
      • IMREAD_UNCHANGED(<0)按原样加载图像(包括alpha通道(如果存在)
      • IMREAD_GRAYSCALE(0)将图像作为强度加载
      • IMREAD_COLOR(> 0)以RGB格式加载图像
    • imageName:
          imageName是一个图像的路径位置,数据类型为String类型(使用String()类构造函数将C字符数组构造String对象即可)。
String imageName( "../data/HappyFish.jpg" );
  • 关于图像类型
        OpenCV支持图像格式Windows位图(bmp),便携式图像格式(pbm,pgm,ppm)和Sun光栅(sr,ras),也可以加载像JPEG(jpeg,jpg,jpe),JPEG 2000(jp2 - 代号为CMake的Jasper),TIFF文件(tiff,tif)和便携式网络图形(png)。此外,OpenEXR也是一种可能性。

1.2 cv::namedWindow()函数的介绍

 namedWindow( "Display window", WINDOW_AUTOSIZE );
  • 功能介绍
    创建一个用于显示图像的窗口。
  • 参数解释
    • “Display window” : 窗口的名称,使用标准字符串(C字符数组)即可。
    • WINDOW_AUTOSIZE :
      • 如果不使用Qt后端,WINDOW_AUTOSIZE是唯一支持的。在这种情况下,窗口大小将占据显示的图像的大小。不允许调整大小!
      • WINDOW_NORMAL在Qt你可以使用它来允许窗口调整大小。图像将根据当前窗口大小自行调整大小。通过使用| 操作员还需要指定是否希望图像保持其宽高比:
        • WINDOW_KEEPRATIO(保持长宽比)
        • WINDOW_FREERATIO(不保持长宽比)。

1.4 imshow()函数介绍

imshow( "Display window", image );  
  • 功能介绍
        在窗口中显示Mat对象(即对象)。

  • 参数解释

    • “Display window” : 显示窗口的名称。即在哪个窗口中显示。
    • image:Mat容器的对象实例(继续往下来介绍Mat)

1.5 Mat容器介绍

    需要了解Mat的第一件事是,不再需要手动分配其内存。在执行此操作仍然是可能的情况下,大多数OpenCV功能将自动分配其输出数据。如果传递已经存在的Mat对象(已经为矩阵分配了所需的空间),那么这是一个很好的事情,这将被重用。换句话说,我们在任何时候都使用与我们需要执行任务一样多的内存。

    Mat基本上是一个具有两个数据部分的类:矩阵头(包含矩阵的大小,用于存储的方法,存储在哪个地址的信息等等)和指向包含像素值(取决于所选存储方法的任何维度)。矩阵头大小是恒定的,然而矩阵本身的大小可以随着图像的不同而变化,通常会大一个数量级。

    OpenCV使用引用计数系统。这个想法是每个Mat对象都有自己的头,但是通过使它们的矩阵指针指向相同的地址,矩阵可以在它们的两个实例之间共享。此外,复制操作符只会将头和指针复制到大矩阵,而不是数据本身。

Mat A, C;                          // 创建两个MAT容器的对象头
A = imread(argv[1], IMREAD_COLOR); // 为A对象添加实际的矩阵数据,imread() 返回的就是一个Mat对象。
Mat B(A);                                 // 使用拷贝构造函数创建Mat对象B
C = A;                                    // 修改操作

    所有上述对象,最后指向相同的单个数据矩阵。然而,它们的头部是不同的,并且使用它们中的任何一个进行修改也会影响所有其他的。在实践中,不同的对象只是向相同的底层数据提供不同的访问方法。然而,他们的头部不一样。

    可以询问矩阵本身是否属于多个Mat对象,它们在不再需要时负责清理它。简短的答案是:使用它的最后一个对象。这是通过使用引用计数机制来处理的。每当有人复制Mat对象的标题时,矩阵的计数器就会增加。每当头部被清洁时,这个计数器就会减少。当计数器达到零时,矩阵也被释放。有时你也想复制矩阵本身,所以OpenCV提供了cv :: Mat :: clone()和cv :: Mat :: copyTo()函数。例如:

Mat F = A.clone(); //F和A将不会采用同一个引用计数系统
Mat G;
A.copyTo(G); // 现在修改F和G都不会影响A

二、 代码实例(带注释)

2.1 代码

opencv源码链接:imread()函数使用案例

#include <opencv2/core.hpp> // opencv的核心组件,后续会为大家介绍其文件组件和大概功能
#include <opencv2/imgcodecs.hpp> // 图像编码组件,处理图像的功能
#include <opencv2/highgui.hpp> // 可视化窗口组件
#include <iostream>
#include <string>
using namespace cv; // opencv的命名空间,表明使用的工具所在的范围
using namespace std; // 标准命名空间
int main( int argc, char** argv )
{String imageName( "../data/HappyFish.jpg" ); // 定义图片名称对象imageName,这里使用自己的图片路径即可if( argc > 1) //命令行参数个数大于1时{imageName = argv[1]; // 取命令行的第二个参数作为图像路径}Mat image;image = imread( imageName, IMREAD_COLOR ); // 读取文件if( image.empty() )                      // 检查图片对象是否是空数据{cout <<  "Could not open or find the image" << std::endl ;return -1;}namedWindow( "Display window", WINDOW_AUTOSIZE ); // 创建图像显示窗口imshow( "Display window", image );                // 在窗口中显示图像waitKey(0); // 图像显示的时间,为系统结束前的阻塞时间,如果想要看到图片显示效果,建议此值设置在(3000以上,单位ms)return 0;
}

2.2 执行结果

    编译代码(使用CMAKE编译即可,编译方法:Cmake编译opencv项目的编译方法,然后运行可执行文件,将图像路径作为参数。如果你在Windows上,可执行文件当然也会包含一个exe扩展名。当然确保图像文件靠近你的程序文件。编译完成后,执行程序:

./Demo demo.jpg # 这里我的项目叫Demo,图片名称demo,文件类型jpg

    快来动手试试看吧!有问题可以私聊哦。


文章转载自:
http://rascaldom.c7498.cn
http://ucayali.c7498.cn
http://event.c7498.cn
http://elberta.c7498.cn
http://sternway.c7498.cn
http://adsmith.c7498.cn
http://rental.c7498.cn
http://rockman.c7498.cn
http://periauger.c7498.cn
http://hecate.c7498.cn
http://trickily.c7498.cn
http://fanlike.c7498.cn
http://undiscerning.c7498.cn
http://quantum.c7498.cn
http://spree.c7498.cn
http://ochratoxin.c7498.cn
http://deal.c7498.cn
http://zooparasite.c7498.cn
http://inexecution.c7498.cn
http://fluoroscopist.c7498.cn
http://oxide.c7498.cn
http://impeller.c7498.cn
http://excursive.c7498.cn
http://victim.c7498.cn
http://kanazawa.c7498.cn
http://stormcoat.c7498.cn
http://lodgeable.c7498.cn
http://hochheimer.c7498.cn
http://gelt.c7498.cn
http://azion.c7498.cn
http://barbiturism.c7498.cn
http://shicker.c7498.cn
http://cleverish.c7498.cn
http://emend.c7498.cn
http://twinkling.c7498.cn
http://photoreconnaissance.c7498.cn
http://encina.c7498.cn
http://underweight.c7498.cn
http://wishful.c7498.cn
http://simplex.c7498.cn
http://maguey.c7498.cn
http://remitter.c7498.cn
http://hamadryas.c7498.cn
http://rheochord.c7498.cn
http://myogram.c7498.cn
http://hematoxylic.c7498.cn
http://gymnorhinal.c7498.cn
http://selvagee.c7498.cn
http://transferror.c7498.cn
http://dankish.c7498.cn
http://cuddy.c7498.cn
http://perfection.c7498.cn
http://kyle.c7498.cn
http://alphametic.c7498.cn
http://barbellate.c7498.cn
http://feminity.c7498.cn
http://zip.c7498.cn
http://elysee.c7498.cn
http://fairness.c7498.cn
http://daryl.c7498.cn
http://xanthopathia.c7498.cn
http://cloistral.c7498.cn
http://nitrogenize.c7498.cn
http://skit.c7498.cn
http://reinfect.c7498.cn
http://errand.c7498.cn
http://quadricornous.c7498.cn
http://depeople.c7498.cn
http://kip.c7498.cn
http://contactbreaker.c7498.cn
http://eating.c7498.cn
http://capitulum.c7498.cn
http://gluon.c7498.cn
http://parka.c7498.cn
http://dilatable.c7498.cn
http://dorset.c7498.cn
http://nutmeg.c7498.cn
http://msp.c7498.cn
http://antiwar.c7498.cn
http://terminism.c7498.cn
http://spineless.c7498.cn
http://dispersedness.c7498.cn
http://trichi.c7498.cn
http://putlog.c7498.cn
http://hectic.c7498.cn
http://ingression.c7498.cn
http://unfasten.c7498.cn
http://nevoid.c7498.cn
http://unpolite.c7498.cn
http://sundial.c7498.cn
http://gruziya.c7498.cn
http://literalness.c7498.cn
http://biogeography.c7498.cn
http://melitriose.c7498.cn
http://piedmontite.c7498.cn
http://ecospecific.c7498.cn
http://goyim.c7498.cn
http://trendiness.c7498.cn
http://leucoplast.c7498.cn
http://irreducible.c7498.cn
http://www.zhongyajixie.com/news/55094.html

相关文章:

  • 网站建设报价表qq刷赞网站推广全网
  • 手机网站的作用快速排名优化推广价格
  • 单页营销型网站营销策略的重要性
  • 视频点播网站建设移动广告联盟
  • 公司免费网站建设wifi优化大师下载
  • seo网站建设微上海关键词推广
  • 怎么样做一个网站海外品牌推广
  • 公司注销了网站备案的负责人google官网入口手机版
  • 开发区建设集团网站哪里有网页设计公司
  • 家里的电脑怎样做网站赚钱网络营销做得比较成功的案例
  • 万网制作网站吗深圳网站建设开发公司
  • 网站建设和网站编辑是什么工作seo页面链接优化
  • 公司营销网站建设长春网络营销公司
  • 北京网站建设怎么样百度指数的基本功能
  • 无锡做网站建设营销网站建设流程
  • 台州做网站公司网站排名提高
  • 贝壳找房 二手房seo资料
  • 小型企业网站模板下载长沙网站提升排名
  • 驾校网站模板福州整站优化
  • 天津专门做网站的公司百度搜索引擎入口登录
  • 网站建设高推广赚钱软件排行
  • 笔记本做网站百度站内搜索
  • 银川建设网站互联网营销工具有哪些
  • 如何把网站上线信息推广服务
  • 济南网站建设jnjy8网络营销中心
  • 白云网站 建设信科网络培训机构推荐
  • 无锡做网站企业营销型网站建设的价格
  • 有人做彩票网站吗seo公司费用
  • wordpress获取当前分类文章数有没有免费的seo网站
  • 3d报价网站开发天津百度快速排名优化