opencv 不适用于 NetBeans

Posted

技术标签:

【中文标题】opencv 不适用于 NetBeans【英文标题】:opencv not working with NetBeans 【发布时间】:2010-10-12 01:27:01 【问题描述】:

我正在尝试在 netbeans 上使用 opencv 用 c++ 编写这个简单的图像修改程序。我正在使用 ubuntu 10.04。每次我尝试运行或编译它时,它都会返回以下错误。我在链接器和其他工具中配置了 opencv。出了什么问题?

include stdlib.h  
include stdio.h  
include math.h  
include cv.h  
include highgui.h  
int main(int argc, char *argv[])  
  
  IplImage* img = 0;  
  int height,width,step,channels;  
  uchar *data;  
  int i,j,k;  
  if(argc<2)  
    printf("Usage: main <image-file-name>\n\7");  
    exit(0);  
    
  // load an image  
  img=cvLoadImage(argv[1]);  
  if(!img)  
    printf("Could not load image file: %s\n",argv[1]);  
    exit(0);  
    
  // get the image data  
  height    = img->height;  
  width     = img->width;  
  step      = img->widthStep;  
  channels  = img->nChannels;  
  data      = (uchar *)img->imageData;  
  printf("Processing a %dx%d image with %d channels\n",height,width,channels);  
  // create a window  
  cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);  
  cvMoveWindow("mainWin", 100, 100);  
  // invert the image  
  for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)  
    data[i*step+j*channels+k]=255-data[i*step+j*channels+k];  
  // show the image  
  cvShowImage("mainWin", img );  
  // wait for a key  
  cvWaitKey(0);  
  // release the image  
  cvReleaseImage(&img );  
  return 0;  
  

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf  
make[1]: Entering directory `/home/kevin/NetBeansProjects/CppApplication_4'  
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/cppapplication_4  
make[2]: Entering directory `/home/kevin/NetBeansProjects/CppApplication_4'  
mkdir -p build/Debug/GNU-Linux-x86  
rm -f build/Debug/GNU-Linux-x86/main.o.d  
g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/  main.o main.cpp  
main.cpp:4:16: warning: cv.h: No such file or directory  
main.cpp:5:21: warning: highgui.h: No such file or directory  
main.cpp: In function ‘int main(int, char**)’:  
main.cpp:10: error: ‘IplImage’ was not declared in this scope  
main.cpp:10: error: ‘img’ was not declared in this scope  
main.cpp:12: error: ‘uchar’ was not declared in this scope  
main.cpp:12: error: ‘data’ was not declared in this scope  
main.cpp:21: error: ‘cvLoadImage’ was not declared in this scope  
main.cpp:32: error: expected primary-expression before ‘)’ token  
main.cpp:32: error: expected ‘;’ before ‘img’  
main.cpp:36: error: ‘CV_WINDOW_AUTOSIZE’ was not declared in this scope  
main.cpp:36: error: ‘cvNamedWindow’ was not declared in this scope  
main.cpp:37: error: ‘cvMoveWindow’ was not declared in this scope  
main.cpp:44: error: ‘cvShowImage’ was not declared in this scope  
main.cpp:47: error: ‘cvWaitKey’ was not declared in this scope  
main.cpp:50: error: ‘cvReleaseImage’ was not declared in this scope  
make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Error 1  
make[1]: *** [.build-conf] Error 2  
make: *** [.build-impl] Error 2  
make[2]: Leaving directory `/home/kevin/NetBeansProjects/CppApplication_4'  
make[1]: Leaving directory `/home/kevin/NetBeansProjects/CppApplication_4'  

BUILD FAILED (exit value 2, total time: 115ms)  

编辑: 很抱歉造成了巨大的混乱

【问题讨论】:

【参考方案1】:

好的,先生,这是您的编译行:

g++    -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/  main.o main.cpp

当您使用 :

包含标题时
#include <cv.h>  
#include <highgui.h>  

编译器将在默认包含路径上搜索这些文件,通常为:/usr/include

所以,知道 opencv 不会在这个目录上安装它的开发文件,我必须建议你找到它们。 如果 opencv 已正确安装在系统上,命令pkg-config --cflags opencv 会告诉你它们在哪里。来吧,试试看。您也可以执行pkg-config --libs opencv 来查找必须添加到编译中的库。

总结一下,如果你打开一个终端并cd到你的源代码所在的目录,下面的命令可能会编译你的项目如果你已经正确安装了opencv。

g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/  main.o main.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv`

编辑:

你知道吗?我只是粘贴了一些代码(opencv/camera)here(我们称之为 funcam.cpp)。您可以使用它来测试 OpenCV 是否已安装并在您的系统上编译内容。你可以编译它:

g++ funcam.cpp -o funcam `pkg-config --cflags opencv` `pkg-config --libs opencv`

如果它有效,您必须弄清楚如何配置 Netbeans。如果没有,则需要正确安装 OpenCV。

【讨论】:

@a 我不使用它,我太喜欢命令行的东西了。但是现在您知道出了什么问题,您可以找到有关如何配置 Netbeans 并添加这些设置的教程。 好的,谢谢。我通常使用命令行,但我一直在努力使用一次 ide。 好的,我已经让它工作了。不知何故。 Ohwell,我只是将所有内容复制并粘贴到任何新项目中。谢谢。【参考方案2】:

这个link 将有助于设置 Netbeans 以使用 OpenCV。如果已经安装了opencv和Netbeans,直接跳转到页面底部。注意目录路径,需要根据安装情况更改。

【讨论】:

以上是关于opencv 不适用于 NetBeans的主要内容,如果未能解决你的问题,请参考以下文章

VideoCapture 似乎不适用于 Debian - opencv 3.2

SWIG Python 绑定到本地代码不适用于 OpenCV 2.1

网络摄像头在 Ubuntu 12.04 中不起作用,适用于奶酪,不适用于 OpenCV

cv::VideoCapture 适用于网络摄像头,但不适用于 IP 摄像头?

CascadeClassifier::detectMultiScale 不适用于 C++

使用 Python 的 OpenCV 函数裁剪图像 [重复]