【问题标题】:Opencv in UBUNTU LTS error on basic c++ program基本c ++程序上的UBUNTU LTS错误中的Opencv
【发布时间】:2020-07-06 01:57:27
【问题描述】:

我在 UBUNTU 18.04 上为 C++ 安装了 opencv。我在 github 源代码上使用了 cmake,并在 opencv/release 中构建。 但即使是写一个 hello world 程序包含 ''' #包括 ''' 导致使用 g++ 编译时出错。 错误报告是:

`
In file included from /usr/include/opencv2/highgui.hpp:51,
                 from main.cpp:1:
/usr/include/opencv2/videoio.hpp:928:83: error: invalid use of incomplete type ‘struct cv::DefaultDeleter<CvCapture>’
 template<> CV_EXPORTS void DefaultDeleter<CvCapture>::operator ()(CvCapture* obj) const;
                                                                                   ^~~~~
In file included from /usr/local/include/opencv2/core/cvstd.hpp:81,
                 from /usr/local/include/opencv2/core/base.hpp:58,
                 from /usr/local/include/opencv2/core.hpp:54,
                 from /usr/include/opencv2/highgui.hpp:46,
                 from main.cpp:1:
/usr/local/include/opencv2/core/cvstd_wrapper.hpp:32:29: note: declaration of ‘struct cv::DefaultDeleter<CvCapture>’
 template<typename Y> struct DefaultDeleter;
                             ^~~~~~~~~~~~~~
In file included from /usr/include/opencv2/highgui.hpp:51,
                 from main.cpp:1:
/usr/include/opencv2/videoio.hpp:929:91: error: invalid use of incomplete type ‘struct cv::DefaultDeleter<CvVideoWriter>’
 template<> CV_EXPORTS void DefaultDeleter<CvVideoWriter>::operator ()(CvVideoWriter* obj) const;
                                                                                           ^~~~~
In file included from /usr/local/include/opencv2/core/cvstd.hpp:81,
                 from /usr/local/include/opencv2/core/base.hpp:58,
                 from /usr/local/include/opencv2/core.hpp:54,
                 from /usr/include/opencv2/highgui.hpp:46,
                 from main.cpp:1:
/usr/local/include/opencv2/core/cvstd_wrapper.hpp:32:29: note: declaration of ‘struct cv::DefaultDeleter<CvVideoWriter>’
 template<typename Y> struct DefaultDeleter;
`

编辑:相同的输出

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

我的代码ma​​in.cpp是:

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

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

  cv::Mat image;
  image = cv::imread("sample.jpeg" , CV_LOAD_IMAGE_COLOR);

  if(! image.data ) {
      std::cout <<  "Could not open or find the image" << std::endl ;
      return -1;
    }

  cv::namedWindow( "Display window", cv::WINDOW_AUTOSIZE );
  cv::imshow( "Display window", image );

  cv::waitKey(0);
  return 0;
}

的 bash 输出

pkg-config --cflags --libs opencv

是:

-I/usr/include/opencv -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_datasets -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_line_descriptor -lopencv_optflow -lopencv_video -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_rgbd -lopencv_viz -lopencv_surface_matching -lopencv_text -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core

bash output

系统配置:

opencv:3.2.0

编译器:g++

操作系统:ubuntu

【问题讨论】:

  • 由于这是一个 OpenCV 问题,请使用适当的标签而不是 machine-learning(已编辑)。
  • @desertnaut 好的。谢谢
  • OpenCV 版本?
  • 3.2.0:opencv 版本。虽然我尝试使用来自 github 的最新源代码,但同样的错误。

标签: c++ opencv g++ static-libraries static-linking


【解决方案1】:

您需要将OpneCV 与您的程序相关联。

尝试以下方法: g++ main.cpp pkg-config --cflags --libs opencv -o out

pkg-config --cflags --libs opencv 将添加include_dirslink_directories

更多解释here.

【讨论】:

  • 我用过:g++ main.cpp pkg-config --cflags --libs opencv` -o out` ,注意` please 和同样的错误,完全一样,所以我我没有重现错误。不过谢谢你的回复。
  • 试试g++ `pkg-config --cflags --libs opencv` main.cpp -o out
  • 兄弟,完全相同的错误。什么是 DefaultDeleter 错误?和这两行一样,这是唯一的错误!
  • 我已经包含了 main.cpp 问题
  • make install你的opencv了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 2016-12-07
相关资源
最近更新 更多