目录
基础知识
-
什么是OpenCV
OpenCV是一个开源的计算机视觉库。OpenCV设计用于进行高效的计算,十分强调实时应用的开发。
-
什么是计算机视觉
计算机视觉这种技术可以将静止图像或视频数据转换为一种决策或新的表示。所有这种转换都是为了完成某种特定的目的而进行的。 一个新的表示:意思是将彩色图像转换为黑白图像,或者从一个图像序列中消除相机运动所产生的影响。
视觉的不适定问题,物体的二维表示可能随着视点的不同完全改变。
备注:一个数学物理定解问题的解如果存在,唯一并且稳定的,则说明该问题是适定的(well-posed);如果不满足,则说明该问题是 不适定的(ill-posed).
OpenCV的起源与目标
-
OpenCV怀着为计算机视觉提供通用性接口这一思想开始了策划。
-
OpenCV目标:
-
为高级的视觉研究提供开源并且优化过的基础代码,不再需要重复造轮子。
-
以提供开发者可以在此基础上进行开发的通用接口为手段椽笔视觉相关知识,这样代码有更强的可读性和移植性。
-
以创造可移植的、优化过的免费开源代码来推动基于高级视觉的商业应用,这些代码可以自由使用,不要求商业应用程序开放或免费。
-
练习
-
下载并且安装最新的OpenCV,并分别在debug模式和release模式下进行编译。
练习参考文章:
LNK1104 无法打开文件 “python38_d.lib”
使用Cmake和VS2019进行编译。
官网下载OpenCV - Sources版本。Github下载对应的opencv_contrib文件。
Tags · opencv/opencv_contrib (github.com)
打开Cmake,编译目录选择刚下载的OpenCV源码对应的目录。
然后点击 Configure,选择自己使用的编译器,点击Finish,然后等待配置完成。
然后手动添加OPENCV_EXTRA_MODULES_PATH
其他需要勾选的项目有:
WITH_OPENGL
BUILD_opencv_world
OPENCV_ENABLE_NONFREE
WITH_OPENGL
BUILD_opencv_aruco
然后再点Configure,点击Generate,完成(Generating done),点击open Project
我在安装过程中出现了问题,点击Open Project后报错:
如果产生错误,打开生成文件的build文件夹,选择OpenCV.sln打开。
两个版本,需要哪个就生成哪个,都需要就生成两次。
右键ALL_BUILD ---> 生成:等待其生成:
然后选择INSTALL:
生成之后的install文件夹就是需要的:
问题:可能出现无法连接python38_d.lib的情况,
这是因为使用的 python 是 Release 版,而编译是在 Debug 模式下编译的(Release 模式下没有此问题)
在 python 的安装位置找到 include 文件夹,在文件夹下找到 pyconfig.h 文件
277行:将 comment(lib,"python38_d.lib") 改为 comment(lib,"python38.lib")
321行:将 #define Py_DEBUG 注释掉
2. 描述至少三个将3D输入转换为2D表示时引起的问题,你如何解决这些问题。
-
给定一个对于3D世界的二维观测,就不存在一个唯一的方式来重建三维信号。即使数据时完美的,相同的二维图像也可能表示一个无限的3D场景组合中的任一种情况。
-
数据被噪声和失真损坏。污染源来自于生活中很多方面(天气、光线、折射率和运动),传感器中的电路噪声以及电路系统噪声,采集之后对于图像的压缩产生的影响。
-
视觉的不适定问题,物体的二维表示可能随着视点的不同完全改变。
解决方案:
-
增加额外的场景信息,可以帮助我们从传感器的层面改善获取信息的质量。场景信息可以通过机器学习技术进行建模。
-
一般使用统计的方法来对抗噪声。通过时间上的累计统计对噪声进行抑制,当然也可以通过现有数据建立噪声模型来消除噪声。