文号
t54566
阅读
6604
回复
7
收藏
5
所有教程由网友发布,仅供参考,请谨慎采纳。科创不对教程的科学性、准确性、可靠性负责。
【教程】如何在Windows里的MingW里编译安装OpenCV2.4.X
2013/02/13
IP:山东
OpenCV是开源计算机视觉库的缩写,最初由Intel开发,后来转Willow Garage支持,主要用于图像处理和图像识别等领域,是目前除MATLAB之外比较靠谱的一种计算机视觉工具。
网上的很多的都比较老了,而官方文档是英文的,又没有现成的编译版或SDK,给安装带来了很大的不便,这个教程是针对2.4.x的最新版本的。
OpenCV早期(V1.0)由C语言实现,但是由于C语言不便于开发大程序,因此到了V2.0时期OpenCV大部分改由C++实现。
首先我们应该下载编译工具:
Code::Blocks(我认为最好的一个IDE,已经有了的话就不用了)
CMake
OpenCV for Linux(其实用for Windows也行,我用的for Linux)
opencv_ffmpeg.dll(32位)这个从网上搜就可以
下载完成应该是这个样子滴
1.png
codeblocks安装后要这么做
path.png
将CodeBlocks内置的MingW\bin文件夹添加到Path变量
CMake就不用添加进去了
cmake_inst.png
安装完成后, 将OpenCV解压到任意文件夹内
接着将32位的opencv_ffmpeg.dll放进3rdparty\ffmpeg文件夹内
然后在OpenCV的文件夹里新建一个build文件夹
启动CMake-GUI
这么设置文件夹:
source code: E:/OpenCV/OpenCV-2.4.4
binaries: E:/OpenCV/OpenCV-2.4.4/build
然后按一次Configure,弹出一个对话框,提示你要使用哪一个编译器
cmake0.png
直接默认即可
点Finish后会运行一段时间,CMake要读取所有的CMake文件
acmilan作者
13年10个月前IP:未同步
498149
1楼
然后会变红,像这样(这个是另外一次编译)
cmake.png
再点一次Configure,然后就可以Generate了
接着打开命令提示符
输入以下命令:
cd /d e:\\opencv\\opencv-2.4.4\\build
mingw32-make
就开始了漫长的编译过程。
compile.png
不过好在CMake的编译界面是彩色的,还有进度显示,比GNU的编译工具不知好到哪里去了。
编译失败?不用急,再编译一次肯定通过
编译完后
mingw32-make install
然后将build\\install文件夹里的东西复制过去即可
引用
评论
acmilan作者
13年10个月前IP:未同步
498155
2楼
启动CodeBlocks
选择Settings=>Compiler=>Linker Settings
添加Libraries
将C:\\Program Files (x86)\\CodeBlocks\\MingW\\lib\\libopencv******.a都添加进去
libs.png
然后就可以使用啦![s:311]
   run.png
引用
评论
13年10个月前IP:未同步
498159
3楼
只学过2。3,入了个门
相关资料太老了,按网上大牛分析的,似乎最新版对win不是很友好了……
引用
评论
13年10个月前IP:未同步
498518
4楼
推荐使用批处理的path命令做个编译脚本,而不是直接添加环境变量。这样添加的变量是临时的,不会给以后使用造成问题
上次编译WRK的的时候似乎就是因为环境变量重复造成失败……
引用
评论
13年10个月前IP:未同步
498592
5楼
用不着IDE吧。
+1
科创币
acmilan
2013/02/14
只使用vim或emacs,键盘控无疑,鉴定完毕
引用
评论
13年10个月前IP:未同步
498606
6楼
以前用MinGW编译GTK+2,搞了很久很久还是没搞出来
引用
评论
acmilan作者
13年10个月前IP:未同步
498633
7楼
回楼上上:
只使用vim或emacs,键盘控无疑,鉴定完毕
实际上相对于键盘快捷键,鼠标点一点的智力和体力成本较小,而且键盘快捷键也不一定就比鼠标点一点要快[s:307]
大侠就维持现状吧,适合自己的才是最好的。
新人完全可以不学vim和emacs等编辑器,编辑器直接上gedit(Linux)或scite(Windows),终端里就用nano,IDE直接codeblocks
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的