当前位置:   article > 正文

c++ opencv mat_给OpenCV初学者的礼物——OpenCV人脸检测入门教程

c++opencv 人脸中心坐标
867f6d24b8fc62476e22e82afee1ed7e.png

前言

OpenCV是一种经常被用到的计算机视觉库。然而,它的文档是只用英文发布的。这对习惯中文阅读的国内计算机爱好者来说并不是太友好,特别是对那些还没受过高等教育但对计算机科学抱有美好向往的普通大众。

诚然,英文阅读对于业内的大牛们来说并不会带来什么障碍。但是我们栗子社区是要走群众路线的。大牛们虽然技术水平高,但是能力越大责任越大,他们并不能天天来社区陪大家吹水。客观地看,我们的社区的生存根基,其实并不是那少数几个大牛,而是那更广大的初级爱好者,他们才是社区的活力源泉,给论坛源源不断的创造内容和点击。

OpenCV各版本间的使用方法并不是完全统一的,最新的是OpenCV4.0.1,已经与2.x版本的用法有较大的区别。翻译工作与官方数据手册的发布不可避免的会有滞后性,虽然本文作者已经尽可能选取目前最新版本的文档了,但是这些内容也不可避免的会有一天变成过时的糟粕。所以提醒初学者们,尽信书不如无书。

很荣幸能成为大家学习OpenCV的领路人。作者祝大家都能在学习的过程中找人生到真正的意义。

本文的参考文档见https://docs.opencv.org/4.0.1/d1/dfb/intro.html

图像的基本操作

对于人类来说,图像可以解构为画面结构、色彩和非常丰富的意象。你可以把它解构为各种色块或线条,然后用故事性的语言把这幅图像存在脑海里。

反过来,对于计算机来说,这个过程就要机械得多了,计算机只认识组成一副图像的那一个个像素。为了存储这一个个像素,需要像素的坐标和色彩信息。OpenCV以一种叫Mat的结构存储图像,你可以把它理解为一种数据结构,结构上是下图这样的一个表格,表格的行列分布代表像素的行列。

6418986ec3b42416ed5790f961b61fdd.png

在上图的各个像素中,颜色又用三原色来表示,即BGR(蓝绿红)。这些BGR数据依次排列如下图。其中,三原色里的每个颜色元素的值域是0-255(即8位),因此每个像素具有8x3位(即24位真彩色)。

8f8aa7b3e1f1ae24cad7a66a90f304b0.png

我们来建立一个Mat数据M,存储一个最简单的2x2像素的图像,且每个像素为蓝色(0,0,255),可以这样写。要注意的是,目前最新的OpenCV 4.0.1已经不支持C了,代码文件需要按C++写。

Mat M(2,2, CV_8UC3, Scalar(0,0,255));//新建2x2像素图像

imshow("image

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/324796
推荐阅读
相关标签
  

闽ICP备14008679号