研一转眼过去了,研究了一年的机器视觉,图像处理。师兄毕业,留下了9Mb的pdf资料供我们这些后辈瞻仰,甚是佩服,十分严谨的工作态度。祝其在华为工作顺利。

所以在博客中开始写一下OpenCV教程,对这一年学习的知识,经验进行一些整理,算是方便别人,也是为了将来我毕业的时候,好歹留下个一星半点儿给学弟学妹。

OpenCV的介绍在这里就不多说了,它是个图像处理的开发库。可以说matlab对图像处理能做的,它能代替。在刚刚开始的时候并不会用OpenCV写图像处理算法的时候,迫于无奈直接从网上找到对应matlab的源代码,然后根据OpenCV提供的文档硬改matlab源码,幸好脚本语言并不难,这个方法虽然笨点,但确实能达到奇效。

先稍微介绍一下OpenCV的配置,最新的OpenCV刚刚推出2.4.2,这里建议使用最新版本的,OpenCV的库有点庞大,而且在版本升级,c迁移到c++这个过程中,造成了一定的函数和结构冗余,如cv::Mat cvMat Iplimage*,国内http://www.opencv.org.cn/是官方的OpenCV网站,但是基本不再更新了,毕竟OpenCV远不如OpenGL火。

这是两本教材,由于出版较早,那是的OpenCV仅是2.1甚至更早。而在OpenCV 2.2有了较大更新,就是c++化。所以导致2.2库里include里面多了opencv2文件夹。

言归正传,我学习使用的是OpenCV2 Computer Vision Application Programming Cookbook。大家应该可以在verycd上面下载到该书的电子版,质量非常好。比网上流传的《学习OpenCV》pdf质量更好。

那么现在讲一下OpenCV的环境配置

本书推荐使用的编程环境是Visual Studio 2010,还有Qt Creator。当然,我个人也推荐大家使用CodeBlock,简单干净。

首先下载OpenCV最新版本,OpenCV2.4.2。www.opencv.org,后面加cn是国内的官方网站。上一上论坛和大家交流以及看一下网页上面的文档即可。

首先是下载CMAKE,因为新版的OpenCV尚没有提供exe安装包,直接安装dll和lib。所以需要自己根据源码编译,这样也好,能很好支持自己的计算机环境。http://www.cmake.org。再从opencv.org下载windows版的opencv库,解压,然后打开cmake-gui。如下图。在Where is source code 选择解压好的目录,然后再选择好你要建立的源码位置。可以不用参考我的。Name里面有许多选项,可以根据自己的需要选择。默认是不编译examples的,为了学习,还是把勾打上,而且里面有将来使用的素材。

选择好了以后,点Configure,然后会提示你选择编译器,如果安装了VS2010,就可以选择默认的VS2010,如果安装的Qt,会提示使用MingW,这里就不上图了。推荐使用VS2010的编译器,原因是我用的是VS2010编译的OpenCV源码。

然后点Generate即可。cmake会对Opencv进行配置,生成opencv的解决方案。然后目录下就有了sln。

用vs打开,然后生成ALL_BUILD项目,然后再生成INSTALL。就会在目录下出现install目录,这些就是最终开发程序用的dll,lib还有include了。

环境变量

下一步配置自己的环境变量。把bin加入到环境变量里面。

VS2010的项目配置

opencv_videostab242d.lib
opencv_video242d.lib
opencv_ts242d.lib
opencv_stitching242d.lib
opencv_photo242d.lib
opencv_objdetect242d.lib
opencv_nonfree242d.lib
opencv_ml242d.lib
opencv_legacy242d.lib
opencv_imgproc242d.lib
opencv_highgui242d.lib
opencv_gpu242d.lib
opencv_flann242d.lib
opencv_features2d242d.lib
opencv_core242d.lib
opencv_contrib242d.lib
opencv_calib3d242d.lib

可以直接从我这里粘贴进去,这样OpenCV的环境就算是彻底搭建完成了。可以开始项目了。

下面是OpenCV入门的一个简单例子。测试你的OpenCV能否正常运行。

#include "stdafx.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int _tmain(int argc, _TCHAR* argv[])
{cv::Mat image;std::cout<<"size : "<<image.size().height<<" , "<<image.size().width<<std::endl;image=cv::imread("../lena.jpg");if (!image.data){//no image has been created}cv::namedWindow("Original image");cv::imshow("Original image",image);cv::Mat result;cv::flip(image,result,1);cv::namedWindow("Output image");cv::imshow("Output image",result);cv::Mat image2,image3;image2=result;result.copyTo(image3);cv::waitKey(5000);return 0;
}cv::Mat function()
{cv::Mat ima(240,320,CV_8U,cv::Scalar(100));return ima;
}

机器视觉OpenCV库基础教程(一)相关推荐

  1. ubuntu下完全卸载 opencv库 详细教程

     ubuntu下完全卸载 opencv库 详细教程 1:首先你需要先进入安装 opencv的build目录下(这个目录一般都会在你的 home里),进入build目录 执行卸载命令,这个命令执行起来比 ...

  2. Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求

    Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求 转自 http://www.cocoachina.com/ios/20141202/10390.html 本 ...

  3. Anaconda安装opencv库详细教程

    当我们学习计算机视觉和深度学习比如学习人脸识别等,需要使用OpenCv库,而Anaconda环境中并没有提前安装好,需要自行安装. 当我们从终端直接安装OpenCv库时,可能没有安装到Anaconda ...

  4. jstl标签库基础教程及其使用代码

    概述 在 JSP 页面中,使用标签库代替传统的 Java 片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现.鉴于此,出现了 JSTL ( JSP Sta ...

  5. 2022 新版本c++安装opencv库的简单操作教程

    近期选修了计算机视觉 的课程,正好更新一下最新的cpp下的opencv库的教程. 废话少说干货降临: 1. 网站下载解压对应opencv库 这里我们推荐官网下载:https://opencv.org/ ...

  6. 图像处理基础教程和工具软件简介

    本文主要介绍了机器视觉图像处理的基础教程和机器视觉开发软件以及图像处理方法工具包,适合于图像处理初学者参考,以尽快利用如下资源入门,并进行简单的图像处理算法的应用和开发,本文介绍的教程.软件安装包和相 ...

  7. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  8. 《ActionScript 3.0基础教程》——第2章 往舞台动态地添加对象2.1 创建库资源,并为它命名...

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第2章,第2.1节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  9. python基础代码库-python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' respons ...

最新文章

  1. 一个鼠标类( Using C# and Win32API)
  2. 流网络的最小割问题c语言,「网络流24题」最小路径覆盖问题
  3. 别眨眼!AI 通过自学秒解魔方,比人类纪录快两倍
  4. Tomcat设置URL兼容特殊符号
  5. (计算机组成原理)第二章数据的表示和运算-第四节2:本节习题
  6. 超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大[转]...
  7. ASP.NET 百万级分页查询续
  8. vs 下如何调试js
  9. 你愿意一辈子当一个打工的吗
  10. linux系统安装snort,linux下SNORT安装.doc
  11. ShortUrl短网址算法
  12. 教你如何用vbs实现微信自动发送消息功能
  13. 各种 lightbox 实现
  14. 有意思的开源项目分享(持续更新,勤劳的搬运工,只放一些我感兴趣的)
  15. 【数字设计与计算机体系结构】2021-09-26-数字设计与计算机体系结构课程(四)
  16. 基于springboot的租房网站
  17. 前端学习-数据可视化(个人笔记)
  18. 微信加好友方法有哪些?
  19. linux添加javahome
  20. 君子签“区块链+保全链+全证据链”保障电子合同签署全程可靠可信

热门文章

  1. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之9---移动增值业务产业链
  2. SpringBoot/SSM 物品租赁系统 摄影器材租赁系统
  3. 双十一有哪些电容笔值得买?平板电脑第三方电容笔推荐
  4. 孙子兵法——3(将,五德五危)
  5. 向日葵android平板,向日葵远程控制 - 黑科技改变生活,让端游一秒变手游 - Android 应用 - iPad - 【最美应用】...
  6. cassandra日常维护之nodetool repair
  7. 128MB 大页2KBNand Flash读写驱动---K9F1G08U0B
  8. Web 技术学习网站
  9. 智能产品如何“智能”?开发者总结五大经验
  10. 利用matlab做一个不定二重积分的计算