我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

时间:2022-06-30 23:37:32

教程:www.cnblogs.com/jliangqiu2016/p/5597501.html

这里主要记载我编译遇到的错误及解决方法。

OpenCV3.1软件下载:https://sourceforge.net/projects/opencvlibrary/

https://blog.csdn.net/liu798675179/article/details/51259505

Description 描述

The Open Source Computer Vision Library has >2500 algorithms, extensive documentation and sample code for real-time computer vision. It works on Windows, Linux, Mac OS X, Android and iOS.

OpenCV库有超过2500种实时计算机视觉算法,扩展文档和例子代码。它可以在Windows、Linux、Mac OS X、Android和iOS上运行。

Homepage: opencv.org 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7) 主页:opencv.org
Q&A forum: answers.opencv.org 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7) 问答社区:answers.opencv.org
Documentation: docs.opencv.org 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7) 文档:docs.opencv.org

Please pay special attention to our tutorials!http://docs.opencv.org/doc/tutorials/tutorials.html 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

请特别关注一下我们的教程!http://docs.opencv.org/doc/tutorials/tutorials.html

Books about the OpenCV are described here: http://opencv.org/books.html 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7) 关于OpenCV的书籍在这里描述:http://opencv.org/books.html

OpenCV Web Site 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

Follow @opencvlibrary 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

机器人技术,人类机器接口,实时处理

License 许可

BSD License

 
OpenCV 3.1 发布,计算机视觉库:http://www.oschina.net/news/69235/opencv-3-1

编译:http://www.cnblogs.com/jliangqiu2016/p/5597501.html

关于ffmpeg其实挺眼熟的因为之前视频格式转换混流时下的,好像是源代码

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

图1 早前下载的ffmpeg-2.8

结果老是出现opencv_ffmpeg_64.dll下载超时,从csdn上下载的又都过时了,发现opencv现在用的是ffmpeg为3.1.3版本,是16年9月8号更新的,而csdn上还未有这个日期之后的dll

FFMpeg 3.1.3修复来自支付宝unLimit Security Team的高危漏洞:http://www.freebuf.com/vuls/114484.html  FFMpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,包括了目前领先的音/视频编码库 libavcodec。据悉很多软件及系统中,包括现在很多主流的移动端APP采用了FFMpeg,意味着大量的软件及系统都被暴露于网络攻击之下。  漏洞原理:支付宝移动安全团队unLimitSecurity Team的安全研究员超六,发现ffmpeg在解码exr文件时存在一个堆溢出漏洞,CVE编号为CVE-2016-6920。该漏洞存在于解析exr图片文件时,程序对输入参数校验不严,可能导致任意地址写,并且写入数据部分可控。此漏洞在一定条件下能导致任意地址写。漏洞修复:ffmpeg3.1.3中已修复该漏洞(https://ffmpeg.org/security.html),建议使用ffmpeg处理exr文件的软件及系统尽快升级至最新版。漏洞修复如下:
https://github.com/FFmpeg/FFmpeg/commit/01aee8148d4fa439cce678a11f5110656c98de1f

那么如何下载到或者获取到opencv_ffmpeg_64.dll呢?网络下载(官网 Git win32版列表 win64版列表)或者自己编译。若是自己编译则需要最新的对应的ffmpeg包,若是网络下载则是找到网络地址。win32版MD5码为:32BA7790B0AC7A6DC66BE91603637A7D,win64版MD5码为:068ecaa459a5571e7909cff90999a420。校验正确才可以。校验工具:Hash1.0.4。

OpenCV关于ffmpeg使用的声明。

* On Linux and other Unix flavors OpenCV uses default or user-built ffmpeg/libav libraries.
If user builds ffmpeg/libav from source and wants OpenCV to stay BSD library, not GPL/LGPL,
he/she should use --enabled-shared configure flag and make sure that no GPL components are
enabled (some notable examples are x264 (H264 encoder) and libac3 (Dolby AC3 audio codec)).
See https://www.ffmpeg.org/legal.html for details.

在Linux和其他的Unix中OpenCV使用默认的或用户建立的ffmpeg/libav库。

如果用户从源建立ffmpeg/libav,并且想OpenCV保持BSD库,而不是GPL/LGPL,那么他/她应该使用 --分享允许的configure flag,并确保没有GPL组件使用,

一些值得注意的例子是x264(H264编码器)和libac3(Dolby AC3 音频编码)。看https://www.ffmpeg.org/legal.html查看更多细节。

If you want to play very safe and do not want to use FFMPEG at all, regardless of whether it's installed on
your system or not, configure and build OpenCV using CMake with WITH_FFMPEG=OFF flag. OpenCV will then use
AVFoundation (OSX), GStreamer (Linux) or other available backends supported by opencv_videoio module.

如果你想更安全地play,而不想使用任何的FFMPEG,无论是否它安装在了你的系统中,configure并且建立OpenCV时选择CMake为WITH_FFMPEG=OFF标志。OpenCV将

使用AVFoundation(OSX),GStreamer(Linux)或者其他可用的opencv_videoio模块支持的备选方案。

There is also our self-contained motion jpeg codec, which you can use without any worries.
It handles CV_FOURCC('M', 'J', 'P', 'G') streams within an AVI container (".avi").

还有我们自包含的运动jpeg编码,你可以毫无担心的使用。

它使用AVI container(".avi")来处理CV_FOURCC('M', "J', 'P', 'G')流。

* On Windows OpenCV uses pre-built ffmpeg binaries, built with proper flags (without GPL components) and
wrapped with simple, stable OpenCV-compatible API.

在Windows上OpenCV使用预编译的ffmpeg二进制文件,它是使用合适的标志(不带有GPL组件)和包括简单稳定的OpenCV-兼容的API编译的。
The binaries are opencv_ffmpeg.dll (version for 32-bit Windows) and
opencv_ffmpeg_64.dll (version for 64-bit Windows).

这些二进制文件是opencv_ffmpeg.dll(32位的Windows版本)和opencv_ffmpeg_64.dll(64位的Windows版本)。

See build_win32.txt for the build instructions, if you want to rebuild opencv_ffmpeg*.dll from scratch.

查看build_win32.txt看编译指示,如果你想从头编译opencv_ffmpeg*.dll的话。

The pre-built opencv_ffmpeg*.dll is: 预编译的opencv_ffmpeg*.dll是:
* LGPL library, not BSD libraries. 
* Loaded at runtime by opencv_videoio module. 由opencv_videoio模块在运行时加载的。
If it succeeds, ffmpeg can be used to decode/encode videos; 如果它成功了,ffmpeg可以用来解码/编码视频。
otherwise, other API is used. 否则,其他的API将被使用。

FFMPEG build contains H264 encoder based on the OpenH264 library, that should be installed separatelly.
OpenH264 Video Codec provided by Cisco Systems, Inc.
See https://github.com/cisco/openh264/releases for details and OpenH264 license.
Downloaded binary file can be placed into global system path (System32 or SysWOW64) or near application binaries.
You can also specify location of binary file via OPENH264_LIBRARY_PATH environment variable.

FFMPEG编译包括基于OpenH264库的H264编码器,它应该分开安装。

OpenH264视频编码由Cisco Systems, Inc提供。

查看https://github.com/cisco/openh264/releases看细节和OpenH264许可证。

下载的二进制文件可以放进全局系统路径(System32或者SysWOW64)或者临近的应用二进制中。

你还可以通过OPENH264_LIBRARY_PATH环境变量来指定二进制文件的路径。

If LGPL/GPL software can not be supplied with your OpenCV-based product, simply exclude
opencv_ffmpeg*.dll from your distribution; OpenCV will stay fully functional except for the ability to
decode/encode videos using FFMPEG (though, it may still be able to do that using other API,
such as Video for Windows, Windows Media Foundation or our self-contained motion jpeg codec).

如果LGPL/GPL软件不能跟你的基于OpenCV的产品使用,只需要将opencv_ffmpeg*.dll从你的发布里剔除就可以了;OpenCV依然会

保持完整的功能,除了使用FFMPEG解码/编码视频的能力(尽管如此,它应该可以使用其他的API来实现该功能,比如Video for Windows, Windows Media Foundation或者我们自包含的动态jpeg编码)。

See license.txt for the FFMPEG copyright notice and the licensing terms.

查看license.text看FFMPEG复制权利说明和许可证条款。

最后还是下载了下来。

添加了对于opencv_contrib-master的引用。 点击CMake的Configure按钮

然后又下载了protobuf-cpp-3.1.0.tar.gz和vgg_generated_xx.i文件。

结果generate出基于编译器的工程文件。

点击该工程文件,在debug模式下编译该解决方案。

结果出现了错误。

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

显示错误为:

error C3416 :'function' : an explicit specialization may not be explicitly instantiated 一个显式特化可能没有被显式实例化。

Google了一下,MSDN上给出的解释是:

A function cannot be both explicitly specialized and explicitly instantiated.

一个函数不能同时被显式特化和显式实例化。

什么叫显式特化和显式实例化呢?

关于显式特化:就是用特指的某种参数特指某一种函数。 https://zhidao.baidu.com/question/144766157.html

显式实例化:就是传入实际的参数实例化函数。

那么既实例化又显式特化有可能产生矛盾。

看一下源代码

//Explicit instantiation 显式实例化
template Ptr<Layer> createLayerFromCaffe<ConvolutionLayer>(LayerParams&); //LayerParams&是实例化参数,ConvolutionLayer是图层类

这是由模板Ptr而来的

Ptr<Layer>就是显式指定类型为Layer,相当于template <typename T=Layer>。

显式结构体名称为createLayerFromCaffe。这里又给它指定了一个显式参数为ConvolutionLayer,这个应该是Layer的子类。

而显式特化:

30 template<> //显式特化

31 Ptr<Layer> createLayerFromCaffe<ConvolutionLayer>(LayerParams &params) //函数实现

32 {

33    Ptr<BaseConvolutionLayer> l = ConvolutionLayer::create();

34    initConvDeconvLayerFromCaffe(l, params); //初始化ConvDeconvLayerFromCaffe

35    return Ptr<Layer>(l);

36 }

显式特化和显式实例化只能存在一个。

然后又出现了

Error 10 error C3861: 'round': identifier not found D:\opencv_contrib-master\modules\xfeatures2d\src\boostdesc.cpp 235 1 opencv_xfeatures2d

在工程opencv_xfeatures2d中boostdesc.cpp文件第235行round函数没有找到。

但是round函数是math cstdlib cmath stdlib到底是哪一个呢?

https://zhidao.baidu.com/question/481456600.html

double round(double val)

{
    return (val> 0.0) ? floor(val+ 0.5) : ceil(val- 0.5);
}
http://blog.csdn.net/inter_peng/article/details/51397646
在C++的头文件中有floor()和ceil()函数。在STL中还有round()函数。这三个函数的作用如下:函数名称
 
然后又出现了

Error 9 error C2660: 'cv::calibrateCamera' : function does not take 12 arguments D:\opencv_contrib-master\modules\aruco\src\charuco.cpp 731 1 opencv_aruco

在工程opencv_aruco中charuco.cpp文件第731行的cv::calibrateCamera函数不能带有12个参数。

接着是:

error MSB6006: "cmd.exe" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 151 6 opencv_java

Message 84 Could not find schema information for the attribute 'Condition'. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 549 34 Miscellaneous Files

MSB6006: cmd.exe exited with code 1:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/51421c04-87ac-4c31-824c-f0de899e7cc5/msb6006-cmdexe-exited-with-code-1?forum=msbuild

OpenCV memory leak issue:

http://*.com/questions/5610294/opencv-memory-leak-issue

内存泄露就通不过吗?

警告:warning C4819: The file contains a character that cannot be represented in the current code page(936). Save the file in Unicode format to prevent data loss

http://blog.csdn.net/xiaoting451292510/article/details/17548957

在projects->options->project and solution->build and run->versobity更改为detailed或者diagnosis

发现output输出错误为:

48> [javac] E:\opencv_c\src\org\opencv\calib3d\Calib3d.java:7: 无法访问 java.util.ArrayList (TaskId:286)
48> [javac] 错误的类文件: D:\Java\jdk1.7.0_13\jre\lib\rt.jar(java/util/ArrayList.class) (TaskId:286)
48> [javac] 类文件具有错误的版本 51.0,应为 49.0 (TaskId:286)
48> [javac] 请删除该文件或确保该文件位于正确的类路径子目录中。 (TaskId:286)
48> [javac] import java.util.ArrayList; (TaskId:286)
48> [javac] ^ (TaskId:286)
48> [javac] 1 错误 (TaskId:286)
48> Target 'jar' failed with message 'Compile failed; see the compiler error output for details.'. (TaskId:286)
48> (TaskId:286)
48> BUILD FAILED (TaskId:286)
48> E:\opencv_c\build.xml:9: Compile failed; see the compiler error output for details. (TaskId:286)
48> (TaskId:286)
48> Total time: 12 seconds (TaskId:286)
48>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(151,5): error MSB6006: "cmd.exe" exited with code 1.
48>Done executing task "CustomBuild" -- FAILED. (TaskId:286)

好像是说java编译器有问题:版本太高了?我的Java版本为1.7.0_13当时反编译时安的,但现在版本好像太高了反而不行??

这难道不是C++程序吗怎么又用到java编译器 不得不说opencv很不可思议啊

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

的确是有Java文件啊

那么同时安装java1.6和Java1.7怎么切换环境变量呢  https://zhidao.baidu.com/question/1690271723208020468.html

cmd命令下 查看java -version和javac -version目前是1.7.0_13

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

我在d盘java目录下安装了两个版本:

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

现在需要切换环境变量java_home 之后再在cmd下看一下版本是否切换成功

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

开始->运行->输入cmd->运行cmd.exe程序输入java -version和javac -version发现已经切换成功

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)

重新打开OpenCV.sln试一下重编译是否还出错

发现这次成功编译了。

但是利用https://blog.csdn.net/liu798675179/article/details/51259505所下的最新版contribution出现了错误提示“ocv_testara”。所以我用的原来的再次编译,但是原来的版本提示过错误,我是手动修改的:(1)round函数我是自编译的,(2)sqrt对于long double和float的模棱两可时我是选的double,有两个选了float,(3)对于显式实例化和显式特化我删除了显式实例化,(4)对于cameraCalibrate函数的参数问题我从12参数改到了9参数。

改成java1.6版本后opencv_java和opencv_test_java工程还是出错。

这次的提示信息是:

89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\BoostDesc.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class BoostDesc extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\BriefDescriptorExtractor.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class BriefDescriptorExtractor extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\DAISY.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class DAISY extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\FREAK.java:13: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class FREAK extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\LATCH.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class LATCH extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\LUCID.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class LUCID extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\MSDDetector.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class MSDDetector extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SIFT.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class SIFT extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class SURF extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\StarDetector.java:11: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class StarDetector extends Feature2D {
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\VGG.java:13: 找不到符号
89> [javac] 符号: 类 Feature2D
89> [javac] public class VGG extends Feature2D {
89> [javac] ^
98> test_chesscorners_timing.cpp
98> test_compose_rt.cpp
98>D:\OpenCV3.1.0\sources\modules\core\include\opencv2/core/utility.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\BoostDesc.java:41: 找不到符号
98> test_cornerssubpix.cpp
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.BoostDesc
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\BoostDesc.java:39: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\BriefDescriptorExtractor.java:41: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.BriefDescriptorExtractor
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\BriefDescriptorExtractor.java:39: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\DAISY.java:48: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.DAISY
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\DAISY.java:46: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\FREAK.java:49: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.FREAK
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\FREAK.java:47: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\LATCH.java:41: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.LATCH
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\LATCH.java:39: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\LUCID.java:32: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.LUCID
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\LUCID.java:30: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\MSDDetector.java:18: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.MSDDetector
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\MSDDetector.java:16: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SIFT.java:41: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SIFT
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SIFT.java:39: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:47: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] boolean retVal = getExtended_0(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:61: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] boolean retVal = getUpright_0(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:75: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] double retVal = getHessianThreshold_0(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:89: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] int retVal = getNOctaveLayers_0(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:103: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] int retVal = getNOctaves_0(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:117: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] setExtended_0(nativeObj, extended);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:131: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] setHessianThreshold_0(nativeObj, hessianThreshold);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:145: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] setNOctaveLayers_0(nativeObj, nOctaveLayers);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:159: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] setNOctaves_0(nativeObj, nOctaves);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:173: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] setUpright_0(nativeObj, upright);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:181: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.SURF
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\SURF.java:179: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\StarDetector.java:41: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.StarDetector
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\StarDetector.java:39: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\VGG.java:49: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.VGG
89> [javac] compute_0(nativeObj, image.nativeObj, keypoints_mat.nativeObj, descriptors.nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\VGG.java:57: 找不到符号
89> [javac] 符号: 变量 nativeObj
89> [javac] 位置: 类 org.opencv.xfeatures2d.VGG
89> [javac] delete(nativeObj);
89> [javac] ^
89> [javac] D:\OpenCV3_1\src\org\opencv\xfeatures2d\VGG.java:55: 方法未覆盖其父类的方法
89> [javac] @Override
89> [javac] ^
89> [javac] 44 错误
89> Target 'jar' failed with message 'Compile failed; see the compiler error output for details.'.
98>D:\OpenCV3.1.0\sources\modules\core\include\opencv2/core/utility.hpp : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
98> test_decompose_projection.cpp

Java 中找不到符号的错误

http://bbs.csdn.net/topics/390937058

我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)的更多相关文章

  1. opencv 2&period;4&period;9&plus;pcl 1&period;6&plus;vs2010&plus;win7 32开发环境配置

    最近在做图像方面的开发,需要对软件开发平台进行配置,我查找了关于这些方面的内容,由于软件版本很多,每个人的开发平台又不一样所以在对平台进行搭建过程中遇到了很多问题,下面我将我搭建平台的流程做一个记录. ...

  2. Ubuntu16&period;04下编译安装OpenCV3&period;4&period;0(C&plus;&plus; &amp&semi; python)

    Ubuntu16.04下编译安装OpenCV3.4.0(C++ & python) 前提是已经安装了python2,python3 1)安装各种依赖库 sudo apt-get update ...

  3. OpenCV进阶之路:一个简化的视频摘要程序

    一.前言 视频摘要又称视频浓缩,是对视频内容的一个简单概括,先通过运动目标分析,提取运动目标,然后对各个目标的运动轨迹进行分析,将不同的目标拼接到一个共同的背景场景中,并将它们以某种方式进行组合.视频 ...

  4. OpenCV进阶之路:神经网络识别车牌字符

    1. 关于OpenCV进阶之路 前段时间写过一些关于OpenCV基础知识方面的系列文章,主要内容是面向OpenCV初学者,介绍OpenCV中一些常用的函数的接口和调用方法,相关的内容在OpenCV的手 ...

  5. OpenCV成长之路:图像直方图的应用

    OpenCV成长之路:图像直方图的应用 2014-04-11 13:57:03 标签:opencv 图像 直方图 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否 ...

  6. OpenCV成长之路:图像滤波

    http://ronny.blog.51cto.com/8801997/1394138 OpenCV成长之路:图像滤波 2014-04-11 14:28:44 标签:opencv 边缘检测 sobel ...

  7. OpenCV成长之路:直线、轮廓的提取与描述

    http://ronny.blog.51cto.com/8801997/1394139 OpenCV成长之路:直线.轮廓的提取与描述 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  8. 记录opencv编译过程

    准备学习opencv,参考了几个网页终于完成.编辑器和opencv版本都选择最新的版本. 记录过程如下 1. 下载准备: 1)         Opencv源码, 下载地址: https://sour ...

  9. 机器学习笔记之三-yolov3&plus;win7&plus;vs2017&plus;gpu&plus;opencv编译

    1.环境安装 1.1 vs2017+cuda9.1+cudnn7.0可以和tensorflow一起安装网上教程多,不多说.       唯一需要注意的是vs2017要安装好2015版本的工具集v140 ...

随机推荐

  1. 线程安全性:num&plus;&plus;操作为什么也会出问题?

    线程的安全性可能是非常复杂的,在没有充足同步的情况下,由于多个线程中的操作执行顺序是不可预测的,甚至会产生奇怪的结果(非预期的).下面的Tools工具类的plus方法会使计数加一,为了方便,这里的nu ...

  2. geotrellis使用(八)矢量数据栅格化

    目录 前言 栅格化处理 总结 参考链接 一.前言        首先前几天学习了一下Markdown,今天将博客园的编辑器改为Markdown,从编写博客到界面美观明显都清爽多了,也能写出各种样式的东 ...

  3. Redis总结(二)C&num;中如何使用redis

    上一篇讲述了安装redis<Redis总结(一)Redis安装>,同时也大致介绍了redis的优势和应用场景.本篇着重讲解.NET中如何使用redis和C#. Redis官网提供了很多开源 ...

  4. ol新属性

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. javascript 获取下一个节点

    下一个节点: nextElementSibling 上一个节点 previousElementSibling <div> <select onchange="alert(t ...

  6. DateGradeView分页绑定

    <form method="post" id="nform" runat="server">               &lt ...

  7. laravel 简单的上传图片

     /** * laravel 简单的上传图片* @param Request $request* @return View*/public function upload(Request $reque ...

  8. Python爬虫--简单的单词查询

    Refer to: https://github.com/gaopu/Python/blob/master/Dict.py 本程序参考自上面Github连接 该程序功能是输入一个单词可以给出这个单词的 ...

  9. 锋利的jQuery初学(1)

    引包: 1,首先将文件放进项目里面: 2,再在项目里面进行引用jQuery; (书写方式:<script src="jquery-x.xx.1.min.js">< ...

  10. 魔力Python——一些基本概念

    1.I/O操作 I/O输入/输出(input/output)的缩写. 概念I/O系统,英文全称为“Input output system”,中文全称为“输入输出系统”,由输入输出控制系统和外围设备两部 ...