ORB-SLAM2 | Prometheus_px4 | OpenCV 3.4.9

2023-05-16

Reference to ORB-SLAM2 | GTK+ 2.x symbols detected. Using GTK+ 2.x and 3 in the same process is not supported
https://zhuanlan.zhihu.com/p/400316912

1、环境描述

操作系统:ubuntu18.04.5 LTS (AMD64)
相关软件:ORB-SLAM2、ROS-melodic(OpenCV:3.2.0 installed)、OpenCV:3.4.9(手动编译,编译时CMake添加参数:-DWITH_GTK_2_X=ON)、Prometheuse PX4 (v1)
ROS使用包(与错误相关):opencv_bridge、image_geometry
编译指令:catkin_make
注:实际这里的 ORB-SLAM 2 是经过修改且加了很多其他功能的。主要用于 prometheus_px4 中的场景仿真。

2、命令行错误信息

在屏幕上出现的如下的错误提示:

/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.3.4
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_core.so.3.4
/usr/bin/ld: warning: libopencv_imgproc.so.3.4, needed by /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/libopencv_imgcodecs.so, may conflict with libopencv_imgproc.so.3.2
[  8%] Built target web_cam
[ 10%] Linking CXX shared library /home/user/Prometheus/devel/lib/libellipselib.so
[ 10%] Built target ellipselib
Makefile:159: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
[INFO] SUBMODULE object_detection_landing NOT EXIST, Skip it!
[INFO] SUBMODULE object_detection_yolov5openvino NOT EXIST, Skip it!

[ 15%] Linking CXX executable /home/user/Prometheus/devel/lib/prometheus_detection/landpad_det
/usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.3.4
/usr/bin/ld: warning: libopencv_core.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_core.so.3.4

3、排查过程

该问题陆续困扰我很久,简要说一下正确解决路线:

3.1、ORB-SLAM 相关问题

从提示中可猜测到,ORB-SLAM在编译过程中使用了多个不同版本的OpenCV库,因此造成了冲突。

要排查到底是具体哪些库的使用之相关,则需要引入一个查看动态库依赖的命令:

ldd  #(list dynamic dependencies)

这个命令的作用是列出程序或动态库的依赖关系。

例如:查看 libslam_semantic_nav_ros.so 库文件运行所依赖的库:

~/slam_ws/src/orbslam2/lib$ ldd libslam_semantic_nav_ros.so | grep libopencv
    libopencv_calib3d.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.3.2 (0x00007fce94e1c000)
    libopencv_core.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2 (0x00007fce949e1000)
    libopencv_features2d.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_features2d.so.3.2 (0x00007fce9472c000)
    libopencv_highgui.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.3.2 (0x00007fce94520000)
    libopencv_imgproc.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2 (0x00007fce93fcf000)
    libopencv_video.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_video.so.3.2 (0x00007fce93d6c000)
    libopencv_text.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_text.so.3.2 (0x00007fce93a4d000)
    libopencv_core.so.3.4 => /usr/local/lib/libopencv_core.so.3.4 (0x00007fce8fef8000)					# 版本与前面的不同。
    libopencv_imgcodecs.so.3.4 => /usr/local/lib/libopencv_imgcodecs.so.3.4 (0x00007fce8fa9f000)		# 版本与前面的不同。
    libopencv_ml.so.3.4 => /usr/local/lib/libopencv_ml.so.3.4 (0x00007fce8f3e6000)
    libopencv_flann.so.3.4 => /usr/local/lib/libopencv_flann.so.3.4 (0x00007fce8d785000)
    libopencv_flann.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_flann.so.3.2 (0x00007fce8c287000)
    libopencv_imgcodecs.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2 (0x00007fce8a13f000)
    libopencv_ml.so.3.2 => /usr/lib/x86_64-linux-gnu/libopencv_ml.so.3.2 (0x00007fce896df000)
    libopencv_imgproc.so.3.4 => /usr/local/lib/libopencv_imgproc.so.3.4 (0x00007fce82950000)

上面列出的信息:
#第一列:程序需要依赖什么库
#第二列: 程序所需库在系统中的路径位置
#第三列:即括号中的数,为库加载的开始地址
#如果需要某个库,但程序在系统找不到对应的库,会出现第5行的not found信息

3.2、通过 ldd 命令排查库依赖

一般而言 Prometheus 和 ORB-SLAM2 本身用的库:

orbslam2/lib/liborbslam2.so
orbslam2/Thirdparty/DBoW2/lib/libDBoW2.so
orbslam2/Thirdparty/g2o/lib/libg2o.so
opencv、eigen3等 ORB-SLAM2 所需的库
ros 功能包的相关库等。

首先,通过使用 ldd liborbslam2.so | grep opencv 命令发现 liborbslam2.so 确实链接了 opencv-3.2.0 和 opencv-3.4.9 两个版本的库,输出如下:

~/Prometheus/devel/lib$ ldd libkcftrackerlib.so | grep opencv
	libopencv_core.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_core.so.3.4 (0x00007f6db569a000)
	libopencv_imgproc.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_imgproc.so.3.2 (0x00007f6db3e87000)
	libopencv_core.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_core.so.3.2 (0x00007f6db199d000)

继续查看 prometheus_detection 下的 stereo_detection_saving_gazebo_samples 的库依赖

~/Prometheus/devel/lib/prometheus_detection$ ldd stereo_detection_saving_gazebo_samples | grep opencv
	libopencv_core.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_core.so.3.4 (0x00007efcba027000)
	libopencv_imgcodecs.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_imgcodecs.so.3.4 (0x00007efcb96c9000)
	libopencv_highgui.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_highgui.so.3.4 (0x00007efcb88c0000)
	libopencv_imgcodecs.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_imgcodecs.so.3.2 (0x00007efcb6cb8000)
	libopencv_imgproc.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_imgproc.so.3.2 (0x00007efcb519d000)
	libopencv_core.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_core.so.3.2 (0x00007efcb42af000)
	libopencv_imgproc.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_imgproc.so.3.4 (0x00007efcb1fd5000)

再次确认一下 prometheus_detection 中 web_cam 的库依赖情况。

~/Prometheus/devel/lib/prometheus_detection$ ldd web_cam | grep opencv
	libopencv_core.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_core.so.3.4 (0x00007fb6482a3000)
	libopencv_imgproc.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_imgproc.so.3.2 (0x00007fb646a90000)
	libopencv_imgcodecs.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_imgcodecs.so.3.4 (0x00007fb646132000)
	libopencv_videoio.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_videoio.so.3.4 (0x00007fb6454e7000)
	libopencv_imgcodecs.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_imgcodecs.so.3.2 (0x00007fb6436da000)
	libopencv_core.so.3.2 => /home/npuyin/ThirdParty/OpenCV-3.2.0_install/lib/libopencv_core.so.3.2 (0x00007fb6424e4000)
	libopencv_imgproc.so.3.4 => /usr/local/opencv-3.4.9/lib/libopencv_imgproc.so.3.4 (0x00007fb63ffe0000)

3.3 、排查结果

上述排查已经基本确定了是 opencv 等库依赖出现问题。具体来源是由于 ROS 系统安装的时候自带了OpenCV 3.2.0 (lib 文件安装位置位于 /usr/lib/x86_64-linux-gnu/),而我自用的OpenCV 3.4.9 (安装在/usr/local/lib/)。在编译链接orbslam工程的时候,由于不恰当的配置造成了一部分文件引用了OpenCV 3.2.0,而一部分文件引用了OpenCV 3.4.9 。

确认位置:

$ ls /usr/lib/x86_64-linux-gnu/ | grep opencv
libopencv_aruco.a
libopencv_aruco.so
libopencv_aruco.so.3.2
libopencv_aruco.so.3.2.0
libopencv_bgsegm.a
libopencv_bgsegm.so
libopencv_bgsegm.so.3.2
libopencv_bgsegm.so.3.2.0
libopencv_bioinspired.a
libopencv_bioinspired.so
libopencv_bioinspired.so.3.2
libopencv_bioinspired.so.3.2.0
libopencv_calib3d.a
libopencv_calib3d.so
libopencv_calib3d.so.3.2
libopencv_calib3d.so.3.2.0
libopencv_ccalib.a
libopencv_ccalib.so
libopencv_ccalib.so.3.2
libopencv_ccalib.so.3.2.0
libopencv_core.a
libopencv_core.a_backup
libopencv_core.so
libopencv_core.so.3.2
libopencv_core.so.3.2.0
libopencv_core.so.3.2.0_backup
libopencv_core.so.3.4
libopencv_core.so.3.4.9
……

3.4、解决问题的思路

问题转到:查找ROS自带 OpenCV 库与 自行安装 OpenCV 冲突问题。

单纯 修改/opt/ros/melodic/share/cv_bridge/cmake下*Config.cmake文件版本库,或者更改 CmakeLists.txt 中的 find_package() 并不能完全解决问题。

cv_bridgeConfig.cmake  
cv_bridgeConfig-version.cmake  
cv_bridge-extras.cmake

编译 orbslam 工程的 CmakeLists.txt 中使用的 ROS 功能包 opencv_bridge 和 image_geometry 的库依赖了OpenCV 3.2.0

4、解决办法

参考相关文献给出的两种方法:

4.1、单独卸载这俩ROS功能包(没有验证)

适用于源码编译安装的 ROS 朋友:去 github 下载相应的包,放到 ros 工作空间的src文件夹下,配置他们的CmakeLists.txt 文件中相应的编译路径,使他们编译的时候使用自己安装的 OpenCV 3.4.15 库。

4.2、直接卸载ros自带的OpenCV(我使用的)

思路简述:
首先、卸载该 OpenCV(即3.2.0版本) 会使得所有依赖此opencv-3.2.0 的 ROS 功能包全部卸载。卸载完成后,去 github 下载工程所需要的缺失的功能包(opencv_bridge 和 image_geometry),放到 ros 工作空间的 src 文件夹下,配置他们的 CmakeLists.txt 文件,使他们编译的时候使用自己安装的 OpenCV 库。

步骤:

1、使用 dpkg --get-selections | grep opencv 指令查找所有opencv相关包
输出可能如下所示:

~$ dpkg --get-selections | grep opencv
libopencv-calib3d-dev:amd64			install
libopencv-calib3d3.2:amd64			install
libopencv-contrib-dev:amd64			install
libopencv-contrib3.2:amd64			install
libopencv-core-dev:amd64			install
libopencv-core3.2:amd64				install
libopencv-dev						install
libopencv-features2d-dev:amd64		install
libopencv-features2d3.2:amd64		install
libopencv-flann-dev:amd64			install
libopencv-flann3.2:amd64			install
libopencv-highgui-dev:amd64			install
libopencv-highgui3.2:amd64			install
libopencv-imgcodecs-dev:amd64		install
libopencv-imgcodecs3.2:amd64		install
libopencv-imgproc-dev:amd64			install
libopencv-imgproc3.2:amd64			install
libopencv-ml-dev:amd64				install
libopencv-ml3.2:amd64				install
libopencv-objdetect-dev:amd64		install
libopencv-objdetect3.2:amd64		install
libopencv-photo-dev:amd64			install
libopencv-photo3.2:amd64			install
libopencv-shape-dev:amd64			install
libopencv-shape3.2:amd64			install
libopencv-stitching-dev:amd64		install
libopencv-stitching3.2:amd64		install
libopencv-superres-dev:amd64		install
libopencv-superres3.2:amd64			install
libopencv-ts-dev:amd64				install
libopencv-video-dev:amd64			install
libopencv-video3.2:amd64			install
libopencv-videoio-dev:amd64			install
libopencv-videoio3.2:amd64			install
libopencv-videostab-dev:amd64		install
libopencv-videostab3.2:amd64		install
libopencv-viz-dev:amd64				install
libopencv-viz3.2:amd64				install
libopencv3.2-java					install
libopencv3.2-jni					install
opencv-data							install
python-opencv						install
ros-melodic-vision-opencv			install

2、从输出中看到 libopencv-core3.2:amd64 install
使用命令 sudo apt-get remove libopencv-core3.2 卸载opencv3.2.0,注意不要添加 purge 参数

3、输完指令后会出现如下类似输出

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  ros-melodic-compressed-depth-image-transport ros-melodic-compressed-image-transport ros-melodic-cv-bridge ros-melodic-depth-image-proc
  ros-melodic-desktop ros-melodic-desktop-full ros-melodic-gazebo-plugins ros-melodic-gazebo-ros-pkgs ros-melodic-image-geometry
  ros-melodic-image-pipeline ros-melodic-image-proc ros-melodic-image-publisher ros-melodic-image-rotate ros-melodic-image-transport-plugins
  ros-melodic-image-view ros-melodic-perception ros-melodic-rqt-common-plugins ros-melodic-rqt-image-view ros-melodic-simulators
  ros-melodic-stereo-image-proc ros-melodic-theora-image-transport ros-melodic-vision-opencv ros-melodic-viz
0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded.
After this operation, 3.8 MB disk space will be freed.
Do you want to continue? [Y/n]

卸载完成后,新开一个终端,输入 roscore,若成功运行,则基本无问题。

4、下载 ros 对应功能包
网址:https://github.com/ros-perception/vision_opencv
将 opencv_bridge 和 image_geometry ,放到 ros 工作空间的 src 文件夹下。
使用 pkg-config --modversion opencv 查看当前 OpenCV 版本,输出 3.4.9 则无问题。

~$ pkg-config --modversion opencv
3.4.9

5、后续
删除ROS工作空间之前的build和devel文件,重新编译(catkin_make)整个工程。

6、附
一些相关问题网页链接:
1 cv_bridge依赖opencv版本的问题
2 OpenCV error when trying to run ROS examples
3 OpenCV error when running ros examples in Ubuntu + ROS
4 关于解决libopencv_core.so.2.4, needed by … 的问题
5 解决Ubuntu环境下ROS 中的cv_bridge和自装OpenCV兼容性笔记
6 ubuntu下多版本opencv切換
7 ·Ubuntu 18.04 ROS-melodic 源码安装指定版本opencv 和 opencv_contrib 使用nonfree模块surf算法
8. 在Ubuntu中通过CV_bridge更改OpenCV版本
https://blog.csdn.net/weixin_48110541/article/details/125176144

7、后记

安装后,Terminal 启动时的相关提示

GAZEBO_PLUGIN_PATH :/home/user/Prometheus/devel/lib:/home/user/prometheus_px4/build/amovlab_sitl_default/build_gazebo
GAZEBO_MODEL_PATH :/home/user/Prometheus/Simulator/gazebo_simulator/models:/home/user/Prometheus/Simulator/gazebo_simulator/amov_models:/home/user/prometheus_px4/Tools/sitl_gazebo/models
LD_LIBRARY_PATH /home/user/Prometheus/devel/lib:/opt/ros/melodic/lib:/usr/local/opencv-3.4.9/lib:/usr/local/cuda-11.1/lib64:/usr/local/cuda/lib64:/home/user/prometheus_px4/build/amovlab_sitl_default/build_gazebo

可以在 /home/npuyin/prometheus_px4/Tools/setup_gazebo.bash 中注释下面三行来关闭显示!

# echo -e "GAZEBO_PLUGIN_PATH $GAZEBO_PLUGIN_PATH"
# echo -e "GAZEBO_MODEL_PATH $GAZEBO_MODEL_PATH"
# echo -e "LD_LIBRARY_PATH $LD_LIBRARY_PATH"

8、临时记录

如果有某个功能包或者软件的安装需要用新的覆盖,例如 php7.2 的相关模块重新安装。最好的办法是到:

cd /var/lib/dpkg/info
ls | grep php
sudo mkdir PHP7.2_BK
sudo mv ./php7.2* ./PHP7.2_BK
cd ~/
sudo apt install php7.2-*

即从注册表中删除该模块,然后再重新安装。

9、忠告

不要在同一个主控上安装多个版本opencv,那是自找麻烦,涉及到各种配置,配置不对就导致程序无法运行,调试配置花费大量精力!
来源:
cv_bridge与opencv版本不一致导致程序编译错误及无法运行程序问题的解决方案(附带ORB_SLAM3案例)
https://blog.csdn.net/qq_18276949/article/details/114820705

1、问题描述

换做其他开发环境遇到的问题也是类似的,解决方案也是类似的,因此本解决方案是通用的。

=================

开发环境

嵌入式主控:nvidia xavier
操作系统:ubuntu 18.04, ROS melodic
(1)ros melodic 默认安装 opencv3.2
(2)使用的 zed 相机需要在 xavier 上安装了CUDA10.0,并默认安装了opencv4.1.1
(3)系统源码安装了另一个opencv版本 opencv3.4.9
总的来说,问题中的主控 xavier 上总共有3个版本的opencv:3.2, 4.1.1, 3.4.9

=================

程序配置

主控中 ROS 节点程序因为要使用 zed 相机,对应的 cmakelists.txt 中编译用的是find_package(OpenCV 4 REQUIRED),如果用3就导致程序根本编译不通过。

这就导致用户程序调用的 opencv 库版本4.1.1与 ROS 默认安装的 cv_bridge 调用的opencv-3.2.0不一致问题!

一句话总结:ros-melodic 默认安装 cv_bridge-1.13.0 以及 opencv-3.2.0,而用户程序中用到了 cv_bridge 且设置调用的 opencv 版本为4.1.1。

===================================================

2、问题造成的后果

版本不一致的 cv_bridge 与 opencv 问题会导致很棘手的一个问题——用户代码编译成功,但运行报错的问题。

例如:
(1) 跑 ORB_SLAM2 和/或 ORB_SLAM3 失败
(2) 跑基于 opencv 库函数的用户程序失败
等等
——以下展示了ORB_SLAM3编译其ROS例程结果,只有几个节点编译成功,其他节点报出由于opencv版本冲突问题导致编译失败错误。
在这里插入图片描述

3、解决方案

总体思路:使用高版本的OpenCV对应的cv_bridge。例如:由于用户程序或 ORB_SLAM3 只能使用 opencv4 才能编译通过,因此解决方案只能是安装使用 opencv4 的 cv_bridge。
另外:ROS noetic 默认安装 cv_bridge1.15.0 以及 opencv-4.2.0。因此,需要下载1.15.0 版本的 cv_bridge 源码,将其放到用户自建的 ROS 工作空间中使用。
然后:catkin_make 编译,之后将用户 ROS 节点程序设置为优先链接用户安装的这个版本 cv_bridge(而不是ROS默认安装的那个)。
最后:在~/.bashrc文件中将用户 ROS 工作空间包的 setup.bash 文件在最后 source就能够覆盖 ROS 系统默认的 cv_bridge了,并在 ROS 包对应的 camkelists.txt 中更新为 find_package(OpenCV 4 REQUIRED) 。

步骤总结:

 1. 下载1.15.0版本的cv_bridge源码,catkin_make编译
 2.   ~/.bashrc中source上步安装的cv_bridge包路径
 3.   camkelists.txt中更新find_package(OpenCV 4 REQUIRED)
说明:

(1)cv_bridge包包含在vision_opencv包中,因此,建议将vision_opencv包一起下载下来整体编译安装
(2)注意,对应下载源码时选择

noetic ==> vision_opencv-1.15.0
melodic ==> vision_opencv-1.13.0

不同版本 opencv 的安装路径,可以在对应的 ${INSTALL_PATH}/lib/pkgconfig/opencv.pc 中查看到!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORB-SLAM2 | Prometheus_px4 | OpenCV 3.4.9 的相关文章

  • OpenCV:视频录制太快

    我有一个简单的录像机 录制来自网络摄像头的视频 theVideoWriter open filename countAsString ext CV FOURCC X V I D 30 Size 1920 1080 true while re
  • Pyinstaller“无法执行脚本 pyi_rth_pkgres”并且缺少软件包

    这是我第一次在这里发布问题 因为我的大部分问题已经被其他人回答了 我正在 python 中开发 GUI 应用程序 并尝试使用 pyinstaller 将其打包到单个文件夹和 exe 中 以便于移植 目前 我使用 Windows 10 和 a
  • 如何将 opencv mat 图像转换为 gdi 位图

    我想将 openCV Mat 文件转换为 GDI 位图图像 我找不到任何有关如何执行此操作的信息 我认为没有直接的方法可以做到这一点 但我希望它不涉及将其写入文件并读回 http opencv users 1802565 n2 nabble
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 将线性数组转换为二维矩阵

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • OpenCV:如何使用图像计算相机和物体之间的距离?

    我是 OpenCV 的新手 我正在使用以下公式来计算距离 distance to object mm focal length mm real height of the object mm image height pixels obje
  • 使用 OpenCV VideoWriter 将 RTSP 流存储为视频文件

    我正在使用 OpenCV 开发一个 Python 模块 该模块连接到 RTSP 流以对视频执行一些预处理 主要是降低 fps 和分辨率 然后将其存储在文件系统中 但是 即使在尝试了几种编解码器 寻找类似的开发之后 我总是得到一个空的视频 我
  • 警告:发生了非法反射访问操作(java 中的便携式 opencv)

    我想做一个便携的opencv将依赖项添加到 maven 文件的应用程序pom xml 简化的代码是 import org opencv core Mat public class Builder public static void mai
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • VideoCapture 未检测到 uEye 摄像头

    我的 uEye 相机遇到了一个问题 使用我的笔记本电脑摄像头 id 0 或 USB 上的网络摄像头 id 1 此行完美运行 TheVideoCapturer open 1 TheVideoCapturer 属于 VideoCapture 类
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • OpenCV 读取视频文件时内存不足

    此示例从文件中读取视频cv2 VideoCapture在 python OpenCV 中内存不足 import cv2 cap cv2 VideoCapture file mp4 while True ret frame cap read
  • 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

    我正在尝试使用音频流式传输 FFmpeg 我将在下面展示我的代码 导入模块 import subprocess as sp 创建变量 rtmpUrl rtmp a rtmp youtube com live2 key camera path
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 在 Vega Lite 中使用二维数组数据代替表格

    我正在尝试从普罗米修斯读取数据 https prometheus io https prometheus io 进入 Vega Lite Prometheus 以二维数组返回其数据 如下所示 1 10 3 6 5 0 9 4 11 2 是否
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C

随机推荐