OpenCV3.2.0编译X86的VS2010(vc10)库文件

由于需要,现在VS2010上使用OpenCV3.2.0相关库,官方自带的只有X64版本的vc14(vs2015)相关文件。所以只能自己动手了。

参考链接:

  1. http://blog.csdn.net/zengraoli/article/details/70185803
  2. http://blog.csdn.net/Kelvin_Yan/article/details/53635641

在解压opencv3.2.0的库文件(运行exe)后,会解压出如下的目录
解压文件.jpg

build/x64/vc14目录下就是官方提供一些编译好的文件,sources就是源文件了。
下载编译需要的软件CMake:https://cmake.org/download/
我选用的是目前最新的3.9.0版本。安装好之后运行cmake-gui.exe启动软件。第一行选择源码目录,即刚刚提到的sources目录,第二行选择输出目录,即编译生成文件的存放目录。选择完毕就点击下方的第一个按钮configure,会弹出一个选择版本的框。这里就选32位的vs2010版本。
选择版本.jpg

选好之后点击Finsh,在静静的等待和忍耐之后发现卡在下载一个lib文件的地方,然后毫无意外的发生错误。大概如下(这段错误是我别处贴过来的):

CMake Warning at cmake/OpenCVUtils.cmake:872 (message):
  Download: Local copy of opencv_ffmpeg.dll has invalid MD5 hash:
  3a56b0b26c0d56457a990eb00d87f889 (expected:
  89c783eee1c47bfc733f08334ec2e31c)
Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
  cmake/OpenCVFindLibsVideo.cmake:206 (include)
  CMakeLists.txt:536 (include)

Downloading opencv_ffmpeg.dll...
CMake Error at cmake/OpenCVUtils.cmake:895 (file):
  file DOWNLOAD HASH mismatch

  for file: [D:/opencv/310/opencv/sources/3rdparty/ffmpeg/downloads/89c783eee1c47bfc733f08334ec2e31c/opencv_ffmpeg.dll]
      expected hash: [89c783eee1c47bfc733f08334ec2e31c]
        actual hash: [56c56445ab47e8ff52bda82ce1c0a798]
             status: [28;"Timeout was reached"]

Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
  cmake/OpenCVFindLibsVideo.cmake:206 (include)
  CMakeLists.txt:536 (include)

CMake Error at cmake/OpenCVUtils.cmake:899 (message):
  Failed to download opencv_ffmpeg.dll.  Status=28;"Timeout was reached"
Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:10 (ocv_download)
  cmake/OpenCVFindLibsVideo.cmake:206 (include)
  CMakeLists.txt:536 (include)


Configuring incomplete, errors occurred!
See also "D:/opencv/310/mybuild/CMakeFiles/CMakeOutput.log".
See also "D:/opencv/310/mybuild/CMakeFiles/CMakeError.log".

看来是被墙了,那就自己下载这个文件吧。编辑器打开sources/3rdparty/ffmpeg/ffmpeg.cmake

# Binary branch name: ffmpeg/master_20161202
# Binaries were created for OpenCV: 594c136d1fcbb5816c57516e50f9cbeffbd90835
set(FFMPEG_BINARIES_COMMIT "2a19d0006415955c79431116e4634f04d5eb5a74")
set(FFMPEG_FILE_HASH_BIN32 "f081abd9d6ca7e425d340ce586f9c090")
set(FFMPEG_FILE_HASH_BIN64 "a423363a6eb76d362ca6c406c96c8db6")
set(FFMPEG_FILE_HASH_CMAKE "5346ae1854fc7aa569a722e85af480ec")

set(FFMPEG_DOWNLOAD_URL ${OPENCV_FFMPEG_URL};$ENV{OPENCV_FFMPEG_URL};https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/)

ocv_download(PACKAGE opencv_ffmpeg.dll
             HASH ${FFMPEG_FILE_HASH_BIN32}
             URL ${FFMPEG_DOWNLOAD_URL}
             DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})

ocv_download(PACKAGE opencv_ffmpeg_64.dll
             HASH ${FFMPEG_FILE_HASH_BIN64}
             URL ${FFMPEG_DOWNLOAD_URL}
             DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})

ocv_download(PACKAGE ffmpeg_version.cmake
             HASH ${FFMPEG_FILE_HASH_CMAKE}
             URL ${FFMPEG_DOWNLOAD_URL}
             DESTINATION_DIR ${CMAKE_CURRENT_LIST_DIR})

include(${CMAKE_CURRENT_LIST_DIR}/ffmpeg_version.cmake)

应该能看出点什么来,好,我们自己把下载的地址拼出来~~(建议用NotePad++之类的编辑器,在选中相同变量时有高亮提示,拼接更轻松哦-_-||)!
https://raw.githubusercontent.com/opencv/opencv_3rdparty/2a19d0006415955c79431116e4634f04d5eb5a74/ffmpeg/opencv_ffmpeg.dll,这是我这个版本拼出来的,然后用浏览器手动翻墙下载,cmake文件也有md5信息,下好了可以比较下。确认下载无误后替换sources/3rdparty/ffmpeg/downloads/f081abd9d6ca7e425d340ce586f9c090/中下载错误的文件,f081abd9d6ca7e425d340ce586f9c090可能每个人都不一样,但是里面的文件名是一样的,找到对应的,替换掉就好,然后重启cmake再次configure(cmake文件中有各种版本,可以下载需要的版本)。嗯,再次报错
cmaketimeout.jpg

这次是个压缩包,不过和之前一样操作就行了。
经过一系列手工操作,终于完成configure了,然后会在上面显示Name和Value的两列配置,可以根据需要选择。
需要注意的是,如果想和官方一样将lib和dll文件都合并到一起,可以勾选opencv_world选项。这样生成的lib都合到一起方便配置和使用,如opencv_world320.libopencv_world320.dll这样的。
opencvdone.jpg

配置好了点击Generate开始生成。这里倒是一路畅通无阻,爽。完成之后打开文件夹,发现生成了VS2010的工程,用VS2010打开后准备编译。
工程.jpg

在VS2010资源管理器的解决方案上右键,生成解决方案,需要注意此时VS的设置是不是需要的Release/Win32,如果需要Debug版本则要切换,如果两个版本都需要那就编译两次吧。时间可能会比较长。静静的等待和忍耐。
最终在项目的binlib目录下选择需要的文件即可。
目录.jpg

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……