OPENCV编辑问题汇总

opencv的编绎问题真多呀,一般代码可能不存在问题,问题主要在工具,开源工具的版本,工具搭配,参数设置,都会影响最终的编绎成功

之前顺手编译一个2.49的,竟然非常顺,一个问题也没发现,换成3.3和2.4.13问题真多,总结一下。

当然,有时新版本也会出现问题。

1.OPENCV出了3.3,就下载下来编编试试。

出现问题,opencv的github查到解决方案,据说只在3.3才有

  • OpenCV => 3.3.0-rc
  • Operating System / Platform => Windows 10 - 64 Bit
  • Compiler => Visual Studio 15 2017
  • cmake => 3.9.0-rc5

大约会提示类似错误,windres.exe输入参数为空的样子 :

:\PROGRA~2\minGW\bin\windres.exe: invalid option -- W,

问题原因在cmake,cmake版本大于3.9会有这个问题,我的是3.8,没有这个问题,网上一个哥们说他的3.7也没有这个问题

解决这个问题,下面CMake option: ENABLE_PRECOMPILED_HEADERS=OFF就这个了,好像也有提供cmake补丁的,或者cmake降级的,算了太麻烦:

2.编绎2.4.13时出现下面问题

C:\opencv\sources\modules\highgui\src\window_w32.cpp: In function 'int icvCreateTrackbar(const char*, const char*, int*, int, CvTrackbarCallback, CvTrackbarCallback2, void*)':
C:\opencv\sources\modules\highgui\src\window_w32.cpp:1853:81: error: 'BTNS_AUTOSIZE' was not declared in this scope
                                         WS_CHILD | CCS_TOP | TBSTYLE_WRAPABLE | BTNS_AUTOSIZE | BTNS_BUTTON,
                                                                                 ^
C:\opencv\sources\modules\highgui\src\window_w32.cpp:1853:97: error: 'BTNS_BUTTON' was not declared in this scope
                                         WS_CHILD | CCS_TOP | TBSTYLE_WRAPABLE | BTNS_AUTOSIZE | BTNS_BUTTON,
                                                                                                 ^
modules\highgui\CMakeFiles\opencv_highgui.dir\build.make:187: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.obj' failed
mingw32-make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_w32.cpp.obj] Error 1
CMakeFiles\Makefile2:2198: recipe for target 'modules/highgui/CMakeFiles/opencv_highgui.dir/all' failed
mingw32-make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2

主要就是有几个变量没有找到,后来在一个opencv的issues里找到了解答,大概意思就是在mingw的头文件commctrl.h中,对于上面的变量宏的定义实际上是由_WIN32_IE是否定义来决定的,找到MingW\include\commctrl.h文件却发现,他的写法竟然是直接#if 0,问题很明显,这这个宏在原始状态是关闭的,把下面#if 0改成#if 1和0x0500就行了

#include <prsht.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _WIN32_IE
/* define _WIN32_IE if you really want it */
#if 0
#define _WIN32_IE    0x0300
#endif
#endif

3.今天在win7中配置opencv2.4.13 时报错  ,错误信息是:CMake Warning at cmake/OpenCVPackaging.cmake:23 (message): CPACK_PACKAGE_VER

原来这个参数是需要安装git客户端工具才能获得,所以装个git工具应该就可以解决问题,本人偷懒,根目录下cmake文件直接改了如下内容

  if(NOT GIT_RESULT EQUAL 0)
    set(OPENCV_VCSVERSION "unknown")
  endif()
else()
  # We don't have git:
  # set(OPENCV_VCSVERSION "unknown")
  set(OPENCV_VCSVERSION "2.4.13")
endif()




参考:

https://github.com/opencv/opencv/issues/9100

http://blog.csdn.net/chentianqiao555/article/details/41154977

http://www.cnblogs.com/lhyz/p/4621987.html

http://www.cnblogs.com/yangzifb/p/6755548.html

http://blog.csdn.net/mysea2004/article/details/72566730

猜你喜欢

转载自blog.csdn.net/blogercn/article/details/77609108