【问题标题】:code completion for OpenCV in Code::BlocksCode::Blocks 中 OpenCV 的代码完成
【发布时间】:2014-05-21 03:57:38
【问题描述】:

您能帮我解决以下问题吗?

我在 64 位 Debian Linux 上运行 Code::Blocks 13.12。我是这个 IDE 的新用户。当我在 Code::Blocks 中创建新的 OpenCV 项目并设置正确的编译器标志和链接器标志时,即通过放置 ...

  • `pkg-config opencv --cflags` 进入 设置 > 编译器 > 编译器设置选项卡 > 其他选项选项卡
  • `pkg-config opencv --libs` 进入 设置 > 编译器 > 链接器设置选项卡 > 其他链接器选项
  • /usr/include/, /usr/include/opencv/, /usr/include/opencv2/ 进入设置>编译器的路径> 搜索目录选项卡 > 编译器选项卡,

项目的编译就好了。唯一不起作用的是 OpenCV 函数的代码完成。

我在 main.cpp 中有以下代码。当我在 imread 函数上单击鼠标右键并选择 Find declaration of: 'imread' 菜单选项时,会引发带有 Not found: imread 消息的警报。但是在 STD 的 cerr 上做同样的事情可以正常工作。

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;

int main( int argc, char * argv[] ) {

  Mat img = imread( "lena.jpg", CV_LOAD_IMAGE_COLOR );

  if ( img.empty() ) {
    cerr << "Unable to load the Lena image!" << endl;
    return -1;
  }

  namedWindow( "lena", CV_WINDOW_AUTOSIZE );
  imshow( "lena", img );

  waitKey( 0 );
  return 0;
}

当我选择左侧垂直条上的 Symbols 选项卡时,我可以在那里看到 cv 命名空间,但它似乎是空的。没有子项,不能扩展为 std 命名空间。

我做错了吗?我应该如何说服 Code::Blocks 也解析 OpenCV 的标头?只是重新启动/重新打开 IDE/项目是行不通的。 :-)

非常感谢您的回复。

【问题讨论】:

  • 我是一位经验丰富的 CB 用户,如果我能在 13.12 中让它工作,我该死的。我在 Linux 上使用的另一个 C++ IDE 是 CodeLite:在这里,只要安装了 opencv 头文件,那么 opencv 符号的代码补全、查找声明等就可以工作,而无需对项目或编译器配置做任何额外的操作。
  • 感谢您的确认,那我试试 CodeLite ...

标签: c++ linux opencv autocomplete codeblocks


【解决方案1】:

在 Ubuntu 12.04 上使用 Code::Blocks 10.05 我是这样做的,你可以试试这个。

转到设置->编译器和调试器设置

  • 搜索目录选项卡点击编译器子选项卡添加OpenCV包含路径,

    通常,/usr/local/include

  • 点击Linker子标签,添加opencv bin目录

    通常/usr/local/bin

  • 现在转到链接器设置标签并在其他链接器选项添加链接库

    喜欢,

    -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab

【讨论】:

  • 谢谢,但它对我不起作用。 :-( 版本 13.12 中的 Code::Blocks 可能无法递归和正确解析 /usr/include/opencv2/ 中的所有文件,其中在我的系统上放置了 OpenCV 的标头(此路径设置在 在编译器选项卡上搜索目录)。
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-11
  • 2017-08-22
  • 1970-01-01
相关资源
最近更新 更多