记录opencv编译过程
准备学习opencv,参考了几个网页终于完成。编辑器和opencv版本都选择最新的版本. 记录过程如下
1. 下载准备:
1) Opencv源码, 下载地址: https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
当前选择windows下的版本 opencv-3.3.1-vc14.exe
2) 编译器: 使用vs2017, 下载地址: https://www.visualstudio.com/zh-hans/downloads/
3) cmake-gui: 用于根据系统环境,从cmake配置转换为vs工程配置,
下载地址:http://www.cmake.org/cmake/resources/software.html
4) Opencl配置查看工具: GPU Caps Viewer,下载地址: http://www.geeks3d.com/dl/show/548
5) 其它: 之前安装了一个 python2.7
2. 开始编译安装
1) 安装vs2017并从网上搜索序列号进行注册.
2) 安装opencv源代码 opencv-3.3.1-vc14.exe到C盘根目录.
3) 配置cmake-gui, 设置源目录和生成目录, 设置编译器为vs2017, x64版本. 然后执行Configure.
这个过程时间比较长, 中间遇到的问题是下载 文件opencv_ffmpeg331_64.dll和opencv_ffmpeg331.dll很慢.
这个配置过程执行了几次才下载完毕.
4) 执行完成后接着执行Generate, 等待执行完成, 如下图所示:

5) 执行第三个按钮:”Open Project”, 这时候会打开vs2017, 然后编译整个解决方案. 如下图所示:

3. 测试
1) 使用vs创建新的 工程 test1, 输入代码:
#include "stdafx.h"
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv; int main()
{
Mat img = imread("./pic.jpg");// 读入一张图片
// 创建一个名为 " wind0"窗口
namedWindow("wind0", WINDOW_NORMAL);
imshow("wind0", img); // 在窗口中显示图片
waitKey(); // 等待6000 ms后窗口自动关闭
cv::destroyAllWindows();
return ;
}
2) 配置Debug工程属性:
常规:输出目录: $(SolutionDir)$(Platform)\$(Configuration)\
调试:工作目录: $(SolutionDir)$(Platform)\$(Configuration)\
包含目录: C:\opencv-3.3.1\opencv\build\include
库目录: C:\opencv-3.3.1\opencv\build\lib\Debug
链接器:输入:增加: opencv_world331d.lib;
拷贝opencv编译的dll到Debug目录: C:\opencv-3.3.1\opencv\build\bin\Debug\
opencv_ffmpeg331_64.dll, opencv_world331d.dll
3) 在Debug目录增加图片pic.jpg
4) 编译运行test1工程, 正常情况下应该可以弹出图片显示框.

4. 问题处理
调试时, 每次都会在执行 imshow("wind0", img);时弹出 C++运行异常, 堆栈位置对应opencl的函数clGetPlatformID, 按F5会继续弹出几次 C++异常, 继续F5会弹出配置的图片.
感觉问题不需要修改代码, 就想在查看本机opencl的支持, 下载GPU Caps Viewer执行发现, 电脑上的两个显卡:
GPU 1: Radeon (TM) HD 7450M和GPU 2: Intel(R) HD Graphics 4000都不支持opencl和CUDA, 如下图所示:
在CMakeGUI上面发现WITH_OPENCL为选中状态, 取消选中, 并取消和CUDA及OpenCL相关的配置项, 重新执行配置和 编译, 使用新产生的opencv_world331d.dll链接test1.exe后, 调试和运行都没有出现异常.


5. 参考
1) 【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置
http://blog.csdn.net/poem_qianmo/article/details/19809337
2) 从零开始学习OpenCL开发(一)架构 http://blog.csdn.net/leonwei/article/details/8880012
记录opencv编译过程的更多相关文章
- OpenSift源代码编译过程记录
本文记录了在CentOS6.5上编译Sift的开源实现OpenSift的编译过程,同一时候记录了编译过程中的几个问题. sift的理论已经有非常多了,以下会给出链接: 1.Requirements a ...
- 记录在Python2.7 x64 bit 下 PyQt5.8的编译过程
由于工作需要使用python下面的Qt库.PyQt现在只提供针对Python3.X系列的PyQt,所有需要自己手动编译.防止忘记,特意写下随笔记录备忘. 工 作 环境:Python版本:Python ...
- win10--vs2015--libjpeg--64位库的编译过程记录
win10--vs2015--libjpeg--64位库的编译过程记录 1. 下载源代码: http://libjpeg.sourceforge.net/ 或者 http://www.ij ...
- CUDA 编程相关;tensorflow GPU 编程;关键知识点记录;CUDA 编译过程;NVCC
本文章主要是记录,cuda 编程过程中遇到的相关概念,名字解释和问题:主要是是用来备忘: cuda PTX :并行线程执行(Parallel Thread eXecution,PTX)代码是编译后的G ...
- Latex — 写作编译过程中遇到问题记录与总结
最近在训练的时候,又开始用Latex进行写作.碰到了很多问题,将问题进行记录与总结. 一.输出中文的问题 由于写作的时候用的是中文,而之前用的是英文,故碰到的第一个问题就是中文的问题.我之前下的是Wi ...
- Windows10 + Visual Studio 2017 + CMake +OpenCV编译、开发环境配置及测试
由于最近需要使用OpenCV,本人需要在自己的PC上使用OpenCV,因此最近一直在研究如何使用Visual Studio编译OpenCV源代码并搭建开发环境,折腾了很长时间,查阅了很多相关资料,终于 ...
- Opencv 编译
转载 https://www.cnblogs.com/xinxue/p/5766756.html OpenCV 3.4 版本,圣诞节前发布了,该版本新增了一种去掉视频背景的算法,dnn 模块的进一步改 ...
- gcc编译过程简述
在linux系统上,从源文件到目标文件的转化是由编译器完成的.以hello.c程序的编译为例,如下: dfcao@linux: gcc -o hello hello.c 在这里,gcc编译器读取源文件 ...
- C语言编译过程
GCC编译C源码有四个步骤: 预处理-----> 编译 ----> 汇编 ----> 链接 一. 编译和链接的流程 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在 ...
随机推荐
- zhifubao
使用Git的一个优势便是 我们可以自由的切换到其他分支,而不影响主分支的正常开发,每个分支上都是一份完成的可执行代码那么如何创建分支呢, 创建分支有几种方法, 本地分支和远程分支的差别,意义各是什么,
- springboot自定义配置信息读取
在properties配置文件加入自定义配置例如: zxgl.detail.url=http://*****/zxgl-web/news/viewNewsIndexDetail.do?id= #资讯t ...
- mac 安装和使用MongoDB
安装 尝试一:手动命令安装尝试二:采用Homebrew尝试三:下载安装包使用安装尝试一:手动命令安装按照官网https://docs.mongodb.com/manual/tutorial/insta ...
- win10下安装Cygwin配置gcc编译环境
首先要说明的是,我个人安装cygwin的用途是为了使用kenlm工具训练通及语言模型. 注:统计语言模型工具有比较多的选择,目前比较好的有srilm以及kenlm,其中kenlm比srilm晚出来,训 ...
- Harbor修改/data目录位置
由于harbor默认数据存储位置在/data目录,且修改配置文件操作较为复杂,故这里使用软连接的方式将/data目录文件夹内容映射到/app目录下. ln -s /app/harbor/data/ d ...
- vue的过滤器filter
前记: 排版记录,未免太耽误时间,我就简单的来,下面是一个vue 过滤器的写法,demo 演示,限制一个字符串的长度. vue filter 的官网介绍 https://cn.vuejs.org/v2 ...
- git/gerrit的简介
gerrit和git 1.git Git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN是集中式版本控制系统. Git与svn比较 相同:能记录文件的所有更改记录.这样是为了大量更 ...
- CollectionUtils工具类的常用方法
集合判断: 例1: 判断集合是否为空: CollectionUtils.isEmpty(null): true CollectionUtils.isEmpty(new ArrayList()): t ...
- ubuntu快速部署gitlab汉化容器
前言:gitlab的原理我就不扯了(看这个https://www.jianshu.com/p/567207ac51cd),下面直接上操作 1.前提: a.要有docker的运行环境,用service ...
- windows下安装Python虚拟环境virtualenvwrapper-win
1 前言 由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题. 通过 virtualenv 这个工具,就可以构建一系列 虚拟的 ...