Opencv 打开Cv生成错误
我正在尝试安装opencv 3.0.0版。我以前安装过2.4版,没有错误,但是3.0版给我带来了很多麻烦。我的make命令总是出错。这是日志Opencv 打开Cv生成错误,opencv,Opencv,我正在尝试安装opencv 3.0.0版。我以前安装过2.4版,没有错误,但是3.0版给我带来了很多麻烦。我的make命令总是出错。这是日志 [ 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
[ 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
[23%]构建目标pch\u生成\u opencv\u视频IO
扫描目标opencv\u videoio的依赖项
[23%]构建CXX对象模块/videoio/cmakfiles/opencv\u videoio.dir/src/cap.cpp.o
[23%]构建CXX对象模块/videoio/cmakfiles/opencv\u videoio.dir/src/cap\u images.cpp.o
[23%]构建CXX对象模块/videoio/cmakfiles/opencv_videoio.dir/src/cap_mjpeg_encoder.cpp.o
[23%]构建CXX对象模块/videoio/cmakfiles/opencv_videoio.dir/src/cap_mjpeg_decoder.cpp.o
[23%]构建CXX对象模块/videoio/cmakfiles/opencv\u videoio.dir/src/cap\u gstreamer.cpp.o
[23%]构建CXX对象模块/videoio/cmakfiles/opencv\u videoio.dir/src/cap\u v4l.cpp.o
[23%]构建CXX对象模块/videoio/cmakfiles/opencv_videoio.dir/src/cap_gphoto2.cpp.o
usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:在成员函数中–void cv::gphoto2::DigitalCameraCapture::initContext()–中:
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:325:66:错误:从–void(*)的无效转换(GPContext*,const char*,void*){aka void(*)(GPContext*,const char*,void*)}到–GPContextErrorFunc{aka void(*)(GPContext*,const char*,const char*,ovi*,void*))的无效转换
gp_context_set_error_func(context,ctxErrorFunc,(void*)this);
^
在/usr/include/gphoto2/gphoto2能力列表中包含的文件中。h:28:0,
来自/usr/include/gphoto2/gphoto2库。h:28,
from/usr/include/gphoto2/gphoto2.h:49,
来自/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:32:
/usr/include/gphoto2/gphoto2 context.h:113:6:错误:初始化-void gp\u context\u set\u error\u func(GPContext*,GPContextErrorFunc,void*)的参数2-[-fppermissive]
void gp\u context\u set\u error\u func(GPContext*context,
^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:326:68:错误:从–void(*)的无效转换(GPContext*,const char*,void*){aka void(*)(GPContext*,const char*,void*)}到–GPContextStatusFunc{aka void(*)(GPContext*,const char*,const char*,auva列表标签*,void*)-fpermissive[-fpermissive]
gp_context_set_status_func(context,ctxStatusFunc,(void*)this);
^
在/usr/include/gphoto2/gphoto2能力列表中包含的文件中。h:28:0,
来自/usr/include/gphoto2/gphoto2库。h:28,
from/usr/include/gphoto2/gphoto2.h:49,
来自/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:32:
/usr/include/gphoto2/gphoto2 context.h:115:6:错误:初始化-void gp\u context\u set\u status\u func(GPContext*,GPContextStatusFunc,void*)的参数2-[-fpermissive]
void gp\u context\u set\u status\u func(GPContext*context,
^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:327:70:错误:从–void(*)的无效转换(GPContext*,const char*,void*){aka void(*)(GPContext*,const char*,void*)}到–GPContextMessageFunc{aka void(*)(GPContext*,const char*,const char*,auva列表标签*,void*)fpermissive[-fpermissive]
gp_context_set_message_func(context,ctxMessageFunc,(void*)this);
^
在/usr/include/gphoto2/gphoto2能力列表中包含的文件中。h:28:0,
来自/usr/include/gphoto2/gphoto2库。h:28,
from/usr/include/gphoto2/gphoto2.h:49,
来自/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:32:
/usr/include/gphoto2/gphoto2 context.h:121:6:错误:初始化-void gp\u context\u set\u message\u func(GPContext*,GPContextMessageFunc,void*)的参数2-[-fpermissive]
void gp\u context\u set\u message\u func(GPContext*context,
^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:341:52:错误:未在此范围内声明“gp_camera_autodetect”
CR(gp_摄像头_自动检测(所有设备,上下文));
^
/usr/local/src/opencv/opencv-3.0.0/modules/videoio/src/cap_gphoto2.cpp:250:27:注意:在宏–CR–的定义中
如果((r_0629c47b758=(GPHOTO2_FUN))
知道哪里出了问题吗?ctxMessageFunc/ctxStatusFunc/ctxMessageFunc的OpenCV声明与gphoto2中定义的参数列表不同 将代码修改为
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 *);
并应用下面相同的更改
尽管如此,还有其他“函数缺失”问题,我只是将它们注释掉以通过编译阶段模块,最好获得兼容版本的gphoto2。ctxMessageFunc/ctxStatusFunc/ctxMessageFunc的OpenCV声明与gphoto2中定义的参数列表不同 将代码修改为
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 *);
并应用下面相同的更改
尽管如此,还有其他原因
include /usr/local/lib