安宁网站建设 熊掌号微信人生里面微网站怎么做

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

安宁网站建设 熊掌号,微信人生里面微网站怎么做,如何用微信做网站,学技术包分配的培训机构我们开始学习OpenCV一、OpenCV加载图片和显示图片1.1 imread()函数的介绍1.2 cv::namedWindow()函数的介绍1.4 imshow()函数介绍1.5 Mat容器介绍二、 代码实例#xff08;带注释#xff09;2.1 代码2.2 执行结果一、OpenCV加载图片和显示图片 本章节中#xff0c;将会学习到… 我们开始学习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_UNCHANGED0按原样加载图像包括alpha通道如果存在IMREAD_GRAYSCALE0将图像作为强度加载IMREAD_COLOR 0以RGB格式加载图像 imageName     imageName是一个图像的路径位置数据类型为String类型(使用String()类构造函数将C字符数组构造String对象即可)。
String imageName( ../data/HappyFish.jpg );关于图像类型     OpenCV支持图像格式Windows位图bmp便携式图像格式pbmpgmppm和Sun光栅srras也可以加载像JPEGjpegjpgjpeJPEG 2000jp2 - 代号为CMake的JasperTIFF文件tifftif和便携式网络图形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” 显示窗口的名称。即在哪个窗口中显示。imageMat容器的对象实例继续往下来介绍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以上单位msreturn 0; }2.2 执行结果 编译代码使用CMAKE编译即可编译方法Cmake编译opencv项目的编译方法然后运行可执行文件将图像路径作为参数。如果你在Windows上可执行文件当然也会包含一个exe扩展名。当然确保图像文件靠近你的程序文件。编译完成后执行程序 ./Demo demo.jpg # 这里我的项目叫Demo图片名称demo文件类型jpg快来动手试试看吧有问题可以私聊哦。