最佳
我正在尝试用 C++ 创建一个项目,该项目大部分时间都在 打开简历库。
因此,我在我的 windows 机器上安装了 open-cv3.1.0 并连接了 library 和 include map /文件到我的 netbeans c++ 项目。
成功
总的来说,我认为我已经成功地做到了这一点,因为 当我编译/运行包含下一段代码的应用程序时,我没有收到任何错误。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
++ 我可以读入图像并将其可视化:)
CvMat *img = cvLoadImageM(location.c_str(),CV_LOAD_IMAGE_GRAYSCALE);
cvNamedWindow( "My Window", 1 );
cvShowImage( "My Window", img );
cvWaitKey();
问题
但是我一上随机教程。例如
// create a big 8Mb matrix
Mat A(1000, 1000, CV_64F);
http://docs.opencv.org/3.0-last-rst/modules/core/doc/intro.html
甚至
Mat A;
然后我立即得到一个编译错误:
g++ -o dist/Debug/Cygwin-Windows/ai4 build/Debug/Cygwin-Windows/PrincipalComponentAnalysis.o build/Debug/Cygwin-Windows/ReadInImage.o build/Debug/Cygwin-Windows/main.o -L../../../netbeans/OpenCV/opencv/build/x64/vc14/bin -lopencv_world310 -lopencv_world310d
build/Debug/Cygwin-Windows/PrincipalComponentAnalysis.o: In function `cv::Mat::~Mat()':
/cygdrive/d/fun/ai/ai4/../../../netbeans/OpenCV/opencv/build/include/opencv2/core/mat.inl.hpp:571: undefined reference to `cv::fastFree(void*)'
...
唯一不会给我错误的是:
CvMat A;
CvMat *B;
IplImage *C;
IplImage D;
这是因为大多数(所有)教程和 stackoverflow 问题都使用 Mat A 或 cv::Mat A 版本。
问题
因此问题来了:你有没有遇到过同样的问题?你愿意帮助我吗? + 我该如何解决。
编辑:配置步骤 - OpenCV 3.1
工具 --> 选项 --> c/c++ --> 代码帮助:
- D:\netbeans\openCV\opencv\build\include
- D:\netbeans\openCV\opencv\build\include\opencv2
R-click Project --> Properties --> build --> C++ Compiler --> include directories
- ../../../netbeans/OpenCV/opencv/build/include
- ../../../netbeans/OpenCV/opencv/build/include/opencv2
R-click Project --> Properties --> build --> linker --> Additional Library Directories
- ../../../netbeans/OpenCV/opencv/build/x64/vc14/bin
R-click Project --> Properties --> build --> linker --> Libraries --> Add Labrary
- opencv_world310
- opencv_world310d
解决方案
- 下载CMake
- 下载OpenCV
- 下载 MinGW <-- 使用它作为编译器而不是 cygwin
- 安装MinGW
- 点击此链接 --> http://eyalarubas.com/opencv-installation-on-windows-netbeans-mingw.html
最佳答案
您正在使用 cygwin 进行编译并链接到 VC14 库。
那是你的错误。 VC14 用于 MSVC14(Visual Studio 编译器),您需要自己编译 OpenCV 才能使用 cygwin。 OpenCV 不附带其他预建库。
网上有多个教程介绍如何操作,但实际上您需要使用 cmake 才能为您的特定工具链编译 OpenCV。
关于c++ openCV 3.1 - 不能像教程中那样使用 Mat 或大多数 openCV 东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34724768/