1. 学习了哪些知识,计算机视觉才算入门
计算机视觉是一个很大的范畴的总和,有两种学习方式,一种是阅读基础书,搞懂它的每一部分;另一种是找一个问题,看文献,编程实现,不断往深走。这两种学习方式是互补的,如果你看了好几年书还不能上手解决问题,或者只会解决某些很特殊的问题,对其他问题束手无策都不算成功。因此你需要把看书掌握一般知识和编程实验解决具体问题齐头并进。下面说你要干什么:
下载安装OpenCV2
OpenCV是一个非常强大的计算机视觉库,包括了图像处理、计算机视觉、模式识别、多视图几何的许多基本算法,有c++和Python两种接口。学习的材料首先是安装目录下doc文件夹里的帮助文档,提供所有函数的用法,任何时候对任何函数有疑问请查阅帮助文档,安装目录下还提供一大堆写好的演示程序供参考;《OpenCV_2 Computer Vision Application Programming Cookbook》是一本比较基础的介绍材料,它的缺点是没有介绍分类器(模式识别)方面的函数怎么用。
虽然网上还有其他很多流行的库,比如处理特征点的VLfeat,处理点云的PCL,处理GPU运算的CUDA,处理机器人问题的ROS和MRPT,但是这些都是你在解决具体问题时才会考虑去用的东西,如果你想快速读取视频、做个屏幕交互程序、使用流行的分类器、提取特征点、对图像做处理、进行双目重建,OpenCV都提供相应函数,因此在你不知道该把余生用来干什么的时候,先装OpenCV学习。
读综述
Computer Vision: Algorithms and Application。这本书用1000页篇幅图文并茂地浏览了计算机视觉这门学科的诸多大方向,如果你不知道计算机视觉是一门搞什么的学科,这本书是你绝佳的选择。它的优点是涉猎了大量文献,缺点是缺乏细节,因此很显然只读这本书你根本没法上手工作,因为它讲的实在是太粗糙了。如果你对其中的某一部分感兴趣,就请去读相关文献,继续往下走,这就是这本书的意义。有中文版,但是翻译的不好,也不建议你细细去读,看看里面的图片即可。
Computer Vision: Models, Learning, and Inference:这本书是我认为研究生和高年级本科生入门计算机视觉最好的教材。它内容丰富,难度适中,推导翔实,语言流畅,强烈推荐你花2个月时间把这本书读完。
多视图几何
Multiple View Geometry in Computer Vision:这本书是多视图几何的圣经,意思就是说想搞三维重建或者图像测量之类的项目,这本书是必读的。它需要你有线性代数的基本知识,会SVD分解即可。第一版有中文版,翻译的非常好,但是已经绝版了,可以上淘宝高价买一本,第二版添加的内容很少,在网上可以下载到。
模式识别
模式识别核心就是训练一个函数来拟合手头的数据,如果数据的标签是离散的,称为分类问题,如数据的标签是连续的,称为回归问题;分类又分有监督分类和无监督分类,有监督分类器有神经网络、支持向量机、AdaBoost、随机场、树模型等等。当你拿到一大堆数据,需要从里面找关系的时候,一般都需要使用模式识别算法来训练一个函数/分类器/模型,因此模式识别是机器学习的核心。
《模式分类(第二版)》:这是一本适合普通读者阅读的教材,介绍了模式识别中经典的分类器,讲解细致,语言生动,难度适中,每一个算法都有伪代码。
The Elements of Statistical Learning:这本书使用严谨的数学工具分析模式识别算法,它比较难,但是非常深刻。每拿到一个模型它都会分析这个模型在数学上是如何构造的,并且推导模型的分类错误率。分析和推导是这本书的精髓。
Pattern Recognition and Machine Learning:这是一本从贝叶斯学派的角度分析模式识别模型的书,它使用的工具主要是概率论,比较难,非常深刻,内容非常丰富。
虽然这两本书很难,但是它们用到的数学知识不过是基本的概率论和线性代数,只是用的比较活,计算机视觉这个学科需要的数学知识也是这个水平。
图形学
图形学教材首先推荐《计算机图形学与几何造型导论》,这本书用流畅的语言介绍了图形学的基础知识,选材有趣,推导简洁但是绝不跳步走,保证你能看懂而且不会看烦。
光线追踪器我看过一本薄的《Realistic Ray Tracing》和一本厚的《Ray Tracing from the Ground Up》,两本书都有代码。后一本内容极其丰富,有中文版,翻译尚可。后一本唯一的缺点就是讲不清楚BRDF,但这恰恰是前一本的亮点。
还有一些比较偏的书,比如偏微分方程在图像处理中的应用、细分、压缩感知、马尔科夫随机场、超分辨率分析,概率机器人、多尺度几何分析,这些领域都有各自的名着,你在某个领域深挖的时候,类似这样的书可能会出现在参考文献中,那时再看不迟。
读文献
写到书里的知识基本上都有些过时,你得通过看文献掌握各个领域最新的发展动态。计算机视觉的顶级期刊有两个PAMI和IJCV,顶级会议有ICCV和CVPR,在科学网—[转载]计算机视觉方向的一些顶级会议和期刊有更加详细的介绍。
2. 如何从入门开始学习OpenCV
方法如下:
先去下载最新版OpenCV,网址如下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下载完成后解压到相应目录。本人解压到D:Program FilesOpenCV2.4.3。
有的文章提到使用CMake把OpenCV下面的范例生成为Visual Studio的工程,此处我没有这样做。直接使用范例。这里先把OpenCV目录下面的几个重要目录做个说明:
doc目录:主要包含OpenCV的帮助文档。其中opencv2refman.pdf主要是OpenCV的各种类和函数的使用说明。
opencv_tutorials.pdf,主要是下面教学代码目录里面各个教学范例的简单讲解。
opencv_cheatsheet.pdf主要是最常用OpenCV类和函数的集合。此3个PDF文档对自学者帮助最大。
samplescpp utorial_code目录:里面包含基本教学代码。和上面的opencv_tutorials.pdf文档遥相呼应,构成一个完整的自学体系。
build目录:包含编译,调试,发布所需要的各类动态库,静态库,头文件等。因为OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在这里以Visual Studio 2008为例讲解如何让范例跑起来。
添加环境变量:此处我在path环境变量中添加如下目录:D:Program FilesOpenCV2.4.3uildx86vc9in。记住在前面一个目录后面加分号。
在Visual Studio中包含头文件目录:见附件中的图片,已经用红色矩形框标识如何操作。
在Visual Studio中包含库文件目录:见附件中的图片,已经用红色矩形框标识如何操作。4
建立一个新建Visual Studio VC win32控制台应用工程,这里我选择带预编译头的工程,省去添加cpp文件的工作。
代码创建:这里我选择samplescpp utorial_codeImgProcMorphology_2.cpp文件。先添加包含目录,如下(以后所有范例均可以如下添加):#include <opencv2/opencv.hpp>#include <stdio.h>然后复制代码。
编译文件:自然少不了要包含静态库,要添加的库(debug版和release差别就是文件名后多了一个d标识是debug版)如下:
debug版:
opencv_calib3d243d.lib
opencv_contrib243d.lib
opencv_core243d.lib
opencv_features2d243d.lib
opencv_flann243d.lib
opencv_gpu243d.lib
opencv_haartraining_engined.lib
ibrelease版:
opencv_calib3d243.lib
opencv_contrib243.lib
opencv_core243.lib
opencv_features2d243.lib
opencv_flann243.lib
opencv_gpu243.lib
字符集设置:如果编译过程中出现如下错误:不能将参数 1 从“_TCHAR *”转换为“const std::string &”原因如下: 无法从“_TCHAR *”转换为“const std::string”。请字符集设置为“使用多字节字符集”。
最后指定命令后参数:方法见附件。这样就可以不用在windows命令行下输入参数了,方便调试,但是要注意,图片必须放在你所建立的工程目录下(和.cpp以及.h文件同一目录)。否则就要加上相应的路径。如果参数多于1个,请以空格分开。
支持所有参数设置完成,开始编译运行吧。如果Visual Studio无问题的话,按照以上按部就班操作,每个范例均可以正常运行。
3. cmake编译opencv总是出错 求助啊
是你的编译器版本不对, You probably need to select a different build tool.
在点击configure时,会出来一个选择编译器的框,你选一个你机器里有的编译器就可以了。
4. 作为大二学生,学习Opencv应该有什么技巧有什么建议
人们的方式和方法以及现在的科技来说一些技巧和建议。
首先,由于科技的发展和社会的快速变化,许多网站变成了综合性的网站,不止可以观看电影儿视频电埋如悔视剧。还可以观看自己喜橡租欢的一些方面的知识和技能。比如现在的哔哩哔哩就是现在年轻人所喜欢的一个网站因为在里面可以学到几乎全部你想要学到的知识和技能,因为哔哩哔哩里面有各种方面的强者他们所做的教学视频供人们免费观看和学习;第二,人们也可以去当地的图书馆里面去学习有关的书籍,以此来获取自己想要学到的知识和技能,因为图书馆里面的书人们所需要的各种方面的知识几乎应有尽有,所以人们也可以通过去图书馆阅读一些在这个行业里面有所成就的人所编的书来去学习自己想要获取的知识和技能;第三,我们也可以去找相关专弯正业的老师去学习自己想要的知识和技能,因为毕竟老师可以帮助你解决你在学习当中所遇到的困惑可以很直接的去给予你帮助,这也是比较有效的途径。
因为现在时代的快速进步,社会上所需要的人才已不再是单一专业的人才而是需要全面的人才,所以学习一门其他方面的知识和技能是很有必要的,而以上这些方法便是学习一个自己没有接触过不太熟悉的技巧和建议来帮助学习自己没有接触过的知识和技能。
5. Ubuntu20.04安装opencv4.5.4参考文档:
要为Ubuntu 20.04系统安装OpenCV 4.5.4,首先确保你已安装cmake和make。以下是安装步骤:
遇到`libavcodec-dev`找不到的问题,可以考虑更换NVIDIA源解决。具体步骤如下:
bash
deb ports.ubuntu.com/ubuntu... bionic main universe restricted
... (其余源列表省略)
替换后,更新源并重新尝试安装。