OpenCV学习指南——开篇

什么是OpenCV

  OpenCV是什么?OpenCV是一个跨平台的计算机视觉库,全称是Open Source Computer Vision Library。OpenCV主要用于图像处理、计算机视觉以及模式识别程序,由Intel公司发起并参与。
在这里插入图片描述

如何入门OpenCV

  读者可以通过Python 或者C++入门OpenCV,C++版本的OpenCV还使用了Cuda和SSE等方式进行加速,想要读懂OpenCV的源码可能需要数年的软件功底。但不论是使用C++版本的OpenCV还是Python版本的OpenCV,这个过程都不会太复杂。
这里以Python代码展开介绍。不论你要使用一个怎样的三方库,数据结构和算法的了解是必不可少的,Python版本的OpenCV中,最为核心的数据结构是numpy的ndarray(而C++版本的OpenCV中,其最核心的数据结构是cv::Mat)。在执行大型算法时,Python OpenCV可以用于验证算法的时间复杂度,尽管同等情况下,Python代码的速率要低于C++,但其底层调用的复杂库仍然是通过C++实现的。只要有耐心学习,你会渐入佳境,觉得图像处理的算法也并不复杂。

动手尝试

# -*- coding: utf-8 -*-
import cv2
import numpy as np
# 构建一张图
width = 512
height = 512
img = np.zeros([width, height, 3], dtype=np.uint8)
# 遍历每个像素点,并进行赋值
for i in range(width):
    for j in range(height):
        img[i, j, :] = [i % 256, (255-j) % 256, (255-i + j) % 256]
​
# 展示图片
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.imwrite("image.jpg",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
  这段代码只是利用三原色的渐变,就形成了一张色彩缤纷的图案。
  渐变和随机是大自然最常用的两种算法,也借此构造出了许多美丽的图案。诸如以下图片的生成,先用随机算法去生成点,然后用特定算法去连线,接着再对区域进行填充。
在这里插入图片描述

OpenCV能做什么

  当然,这些只是图像处理的冰山一角,不论你想成为一个顶级的机器视觉大师,还是只是想简单的调用图像处理的工具,OpenCV对你来说都是一个极佳的选择。建议编程功底好的同学选择OpenCV的C++版本进行入门,对自己的编程功底不那么自信,或者时间上不够充裕的同学,建议选择OpenCV的Python版本入门。在Python中安装OpenCV仅需要一条语句:pip install opencv-python。除了基本功能外,OpenCV还有拓展模块contrib值得了解。
  那么OpenCV都实现了哪些基础功能呢?OpenCV集成了常规的图像操作,图像滤波和图像拼、轮廓提取等功能。除此之外,值得一提的是,OpenCV也实现了复杂的统计机器学习库,在学习统计机器学习算法的过程中,学者可以通过OpenCV源码对统计机器学习算法有更深入的理解。
  如果你是一个算法开发者,即便你不需要使用OpenCV,但我还是建议你了解它,比如,你需要验证一个算法的时候,图像将能为你提供最多的数据​。比如,你可以用蚁群算法来提取轮廓,以了解蚁群算法。以下是笔者在github上发布的蚁群提取轮廓源代码

OpenCV进阶

  对于一个程序员而言,不论使用一个三方库再怎么熟练,如果不能了解深层次的原理,终归只是一个使用者。笔者认为,一个程序员应当挑战开发者。这是笔者耐心编译过后可供调用的OpenCV+Contirb的SDK三件套(.h,.lib,.dll)
  相关详细教程,请阅读win10系统下的OpenCV环境搭建

作者声明

  关于近期一些公众号以故事博眼球的做法,笔者这里有话说。因为CSDN博客有一定的访问量,笔者在CSDN上收到过一些公众号发来写文章的邀请,看了对方的公众号才发现,对方几乎不发技术性的文章,绝大多数的文章的标题都是这样的:二十九岁成为清华博导,这是她写给学子们的一封信。…这是北京大学计算机博士小姐姐关注的微信公众号。打工妹逆袭斩获BAT华为大厂的Offer。​诸如此类,以话题博眼球,并不任何内涵的文章。Cclplus在此声明,永远真挚的以解说和技术性文章为主。同时,作者承诺,CSDN上的文章,将永不收费。不过,如果你认为打赏我是有必要的,我的支付宝账号是[email protected]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章