《学习OpenCV 3(中文版)》 —简单的变换

举报
清华大学出版社 发表于 2019/10/23 20:57:14 2019/10/23
【摘要】 本节书摘来自清华大学出版社《学习OpenCV 3(中文版)》 一书中第二章,作者是[美]安德里安 • 凯勒 (Adrian Kaehler) 加里 • 布拉德斯基 (Gary Bradski) , 阿丘科技 刘昌祥 吴雨培 王成龙 崔玉芳 等译。

简单的变换

很好,现在你已经可以用OpenCV来自己动手建立一个视频播放器了,这和现有的那些播放器差不多,但是我们的关注点在计算机视觉,所以希望做一些计算机视觉相关的工作。许多基础的计算机视觉工作都包括对视频流使用滤波器。我们将会对已有的程序进行修改以对视频中的每一帧实现一些简单的操作。

一个最简单的操作就是对图像的平滑处理,这将有通过高斯核或者其他核卷积效减小图像的信息量。OpenCV使得这样使用高斯核的卷积非常容易实现。如示例2-5所示,我们

spacer.gif

7 因为HighGUI是一个轻量级的、易于使用的工具,所以cv::createTrackbar()不会区分滑动条的名称和真正显示在屏幕上的滑动条旁边的标签,你也许已经注意到 cv::namedWindow()也不区分窗口的名称以及真正在窗口上显示的名称。

   可以新建一个名为"Example4-out"的窗口开始,并且在这个窗口显示处理结果。所以,在我们调用cv::imshow()在输入窗口并显示新获得的图像之后,我们就可以在output窗口计算并且显示处理结果。

示例2-5:加载图像并且在显示之前平滑处理图像

#include <opencv2/opencv.hpp> void example2_5( const cv::Mat & image ) {

  // Create some windows to show the input   // and output images in.

  //

  cv::namedWindow( "Example2_5-in", cv::WINDOW_AUTOSIZE );   cv::namedWindow( "Example2_5-out", cv::WINDOW_AUTOSIZE );

  // Create a window to show our input image

  //

  cv::imshow( "Example2_5-in", image );

  // Create an image to hold the smoothed output

  //   cv::Mat out;

  // Do the smoothing

  // ( Note: Could use GaussianBlur(), blur(), medianBlur() or bilateralFilter(). )

  //   cv::GaussianBlur( image, out, cv::Size(5,5), 3, 3);   cv::GaussianBlur(   out, out, cv::Size(5,5), 3, 3);

  // Show the smoothed image in the output window

  //

  cv::imshow( "Example2_5-out", out );

  // Wait for the user to hit a key, windows will self destruct

  //   cv::waitKey( 0 );

}

第一个cv::imshow()的调用和之前我们的使用方法没有什么差别。但是下一个调用的过程中,我们申请了另一个图像结构,接下来,C++对象cv::Mat使我们的工作变得轻松了。我们只需要实例化一个输出矩阵out,这将由程序自行管理并在合适的时候自动分配,释放内存。为了让这点更清晰,我们将其输入到两个cv::GaussianBlur()函数中。在第一次调用中,输入图像被5×5大小的高斯核模糊并且被写入out变量中。高斯核的大小必须是奇数,因为高斯卷积会在其覆盖区域的中心输出结果。在下一次调用 cv::GaussianBlur()的时候,由于被分配了临时的存储空间,所以out可以同时作为输入和输出。执行了两次模糊操作的图像被作为结果输出,在终止之前等待用户进行键盘事件,然后在对象生命周期结束的时候清理申请的内存。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。