首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >打开Cv构建错误

打开Cv构建错误
EN

Stack Overflow用户
提问于 2015-10-08 23:37:07
回答 3查看 1.1K关注 0票数 1

我正在尝试安装opencv版本3.0.0。我之前安装了2.4版本,没有错误,但3.0版本给我带来了很多麻烦。我一直在使用make命令时遇到错误。这是日志

代码语言:javascript
复制
[ 23%] Built target pch_Generate_opencv_videoio
Scanning dependencies of target opencv_videoio
[ 23%] Building CXX object     modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap.cpp.o
[ 23%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_images.cpp.o
[ 23%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_encoder.cpp.o
[ 23%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_mjpeg_decoder.cpp.o
[ 23%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_gstreamer.cpp.o
[ 23%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_v4l.cpp.o
[ 23%] Building CXX object modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_gphoto2.cpp.o
usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp: In member function âvoid cv::gphoto2::DigitalCameraCapture::initContext()â:
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:325:66: error: invalid conversion from âvoid (*)(GPContext*, const char*, void*) {aka void (*)(_GPContext*, const char*, void*)}â to âGPContextErrorFunc {aka void (*)(_GPContext*, const char*, __va_list_tag*, void*)}â [-fpermissive]
 gp_context_set_error_func(context, ctxErrorFunc, (void*) this);
                                                              ^
In file included from /usr/include/gphoto2/gphoto2-abilities-list.h:28:0,
             from /usr/include/gphoto2/gphoto2-library.h:28,
             from /usr/include/gphoto2/gphoto2.h:49,
             from /usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:32:
/usr/include/gphoto2/gphoto2-context.h:113:6: error:   initializing argument 2 of âvoid gp_context_set_error_func(GPContext*, GPContextErrorFunc, void*)â [-fpermissive]
 void gp_context_set_error_func     (GPContext *context,
  ^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:326:68: error: invalid conversion from âvoid (*)(GPContext*, const char*, void*) {aka void (*)(_GPContext*, const char*, void*)}â to âGPContextStatusFunc {aka void (*)(_GPContext*, const char*, __va_list_tag*, void*)}â [-fpermissive]
 gp_context_set_status_func(context, ctxStatusFunc, (void*) this);
                                                                ^
In file included from /usr/include/gphoto2/gphoto2-abilities-list.h:28:0,
             from /usr/include/gphoto2/gphoto2-library.h:28,
             from /usr/include/gphoto2/gphoto2.h:49,
             from /usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:32:
/usr/include/gphoto2/gphoto2-context.h:115:6: error:   initializing argument 2 of âvoid gp_context_set_status_func(GPContext*, GPContextStatusFunc, void*)â [-fpermissive]
void gp_context_set_status_func    (GPContext *context,
  ^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:327:70: error: invalid conversion from âvoid (*)(GPContext*, const char*, void*) {aka void (*)(_GPContext*, const char*, void*)}â to âGPContextMessageFunc {aka void (*)(_GPContext*, const char*, __va_list_tag*, void*)}â [-fpermissive]
 gp_context_set_message_func(context, ctxMessageFunc, (void*) this);
                                                                  ^
In file included from /usr/include/gphoto2/gphoto2-abilities-list.h:28:0,
             from /usr/include/gphoto2/gphoto2-library.h:28,
             from /usr/include/gphoto2/gphoto2.h:49,
             from /usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:32:
/usr/include/gphoto2/gphoto2-context.h:121:6: error:   initializing argument 2 of âvoid gp_context_set_message_func(GPContext*, GPContextMessageFunc, void*)â [-fpermissive]
void gp_context_set_message_func   (GPContext *context,
  ^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:341:52: error: âgp_camera_autodetectâ was not declared in this scope
     CR(gp_camera_autodetect(allDevices, context));
                                                ^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:250:27: note: in definition of macro âCRâ
 if ((r_0629c47b758 = (GPHOTO2_FUN)) < GP_OK) {\
                       ^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp: In member function âint cv::gphoto2::DigitalCameraCapture::widgetDescription(std::ostream&, CameraWidget*) constâ:
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:1036:48: error: âgp_widget_get_readonlyâ was not declared in this scope
 CR(gp_widget_get_readonly(widget, &readonly));
                                            ^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:250:27: note: in definition of macro âCRâ
 if ((r_0629c47b758 = (GPHOTO2_FUN)) < GP_OK) {\
                       ^
make[2]: ***    [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_gphoto2.cpp.o] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2

你知道哪里出了问题吗?

EN

回答 3

Stack Overflow用户

发布于 2016-02-27 03:33:57

我通过从源代码安装libgphoto2-2.5.7gphoto2-2.5.6修复了类似的问题。

我找到了对我有帮助的this post,说明书归结为(但是使用make -j4来加速!):

代码语言:javascript
复制
sudo apt-get install libltdl-dev libusb-dev libusb-1.0 libexif-dev libpopt-dev

# compile libgphoto2-2.5.7 from source
tar -xvzf libgphoto2-2.5.7.tar.gz
cd libgphoto2-2.5.7
./configure
make -j4 # use all 4 cores of the raspi!
sudo make install

# compile gphoto2-2.5.6 from source
tar -xvzf gphoto2-2.5.6.tar.gz
cd gphoto2-2.5.6
./configure
make -j4 # again use all 4 cores of the raspi!
sudo make install

注意:没有找到这个gphoto2库之后的,所以我不得不添加这一行

代码语言:javascript
复制
include /usr/local/lib

添加到文件/etc/ld.so.conf,然后运行ldconfig...

票数 1
EN

Stack Overflow用户

发布于 2016-04-21 17:58:14

两天前,我也遇到了同样的问题,我采用了Dominic提出的解决方案。但不知何故,它仍然是错误的,我post it in my blog。今天,我要再试一次。我使用dpkg --get-selections | grep gphoto来查找我安装的与gphoto相关的内容:

libgphoto2-6:amd64 install

在我移除gphoto2-2.6并安装gphoto2-2.5.7之后,libgphoto2-6仍然在这里。因此,我删除了所有的gphoto,并再次遵循解决方案。在安装gphoto之后,我使用的是sudo ldconfig -v。现在我已经成功构建了openCV 3.1.0~

票数 0
EN

Stack Overflow用户

发布于 2016-02-18 23:43:02

ctxMessageFunc/ctxStatusFunc/ctxMessageFunc的OpenCV声明具有与gphoto2中定义的参数列表不同的参数列表。

将代码修改为

代码语言:javascript
复制
friend void ctxErrorFunc(GPContext *, const char *, va_list args, void *);
friend void ctxStatusFunc(GPContext *, const char *, va_list args, void *);
friend void ctxMessageFunc(GPContext *, const char *, va_list args, void *);

并应用下面相同的更改。

尽管如此,还有其他“函数缺失”的问题,我只是为了通过编译阶段将它们注释掉。如果你使用的是"videoio“模块,最好是获得一个兼容版本的gphoto2。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33020197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档