2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Der Fehler, der seit mehr als einem Tag behoben wurde, wurde endlich behoben ... und wird als Referenz veröffentlicht.
Dank dieses Mannes für seinen Code können alle Inhalte korrekt angewendet werden: ubuntu20.04-Konfiguration vins-fusion+opencv4.6
Dieser Artikel ist auch großartig, Sie können sich auf Folgendes beziehen: Fehler beim Ausführen von lvi-sam unter Ubuntu20.04! Konfliktproblem zwischen Opencv-Bibliothek und cv_bridge-Paket
Release OpenCV 4.6.0 · opencv/opencv · GitHub
Version 4.6.0 · opencv/opencv_contrib · GitHub
https://github.com/ros-perception/vision_opencv/tree/
sudo mv ./opencv-4.6.0/ /usr/local/
sudo mv ./opencv_contirb-4.6.0/ /usr/local/
cd /usr/local/opencv-4.6.0/
sudo mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules
-D WITH_CUDA=OFF
-D ENABLE_FAST_MATH=OFF
-D CUDA_FAST_MATH=OFF
-D WITH_CUBLAS=ON
-D WITH_LIBV4L=ON
-D WITH_GSTREAMER=ON
-D WITH_GSTREAMER_0_10=OFF
-D WITH_QT=ON
-D WITH_OPENGL=ON
-D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr"
-D WITH_TBB=ON
..
make -j8
sudo make install
mkdir -r ~/third/cv_bridge_ws/src/
cd ~/cv_bridge_ws/src/
GitHub - ros-perception/vision_opencv bei noetic
set(Opencv_DIR /usr/local/opencv-4.6.0/build)
set(_opencv_version 4)
find_package(OpenCV 4 QUIET)
cmake_minimum_required(VERSION 3.0.2)
project(my_cv_bridge)
find_package(catkin REQUIRED COMPONENTS rosconsole sensor_msgs)
if(NOT ANDROID)
find_package(PythonLibs)
if(PYTHONLIBS_VERSION_STRING VERSION_LESS "3.8")
# Debian Buster
find_package(Boost REQUIRED python37)
else()
# Ubuntu Focal
find_package(Boost REQUIRED python)
endif()
else()
find_package(Boost REQUIRED)
endif()
set(Opencv_DIR /usr/local/opencv-4.6.0/build)
set(_opencv_version 4)
find_package(OpenCV 4 QUIET)
if(NOT OpenCV_FOUND)
message(STATUS "Did not find OpenCV 4, trying OpenCV 3")
set(_opencv_version 3)
endif()
find_package(OpenCV ${_opencv_version} REQUIRED
COMPONENTS
opencv_core
opencv_imgproc
opencv_imgcodecs
CONFIG
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES ${PROJECT_NAME}
CATKIN_DEPENDS rosconsole sensor_msgs
DEPENDS OpenCV
CFG_EXTRAS cv_bridge-extras.cmake
)
catkin_python_setup()
include_directories(include ${Boost_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
if(NOT ANDROID)
add_subdirectory(python)
endif()
add_subdirectory(src)
if(CATKIN_ENABLE_TESTING)
add_subdirectory(test)
endif()
# install the include folder
install(
DIRECTORY include/${PROJECT_NAME}/
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
)
<package format="2">
# <name>cv_bridge</name>
<name>my_cv_bridge</name>
cd ~/cv_bridge_ws/
catkin_make
source ~/cv_bridge_ws/devel/setup.bash
Quelle ~/.bas在这里插入代码片
hrc
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
geometry_msgs
nav_msgs
tf
cv_bridge_460
camera_models
image_transport)
set(my_cv_bridge_DIR "/home/lemontech/thirdlib/cv_bridge_ws/devel/share/my_cv_bridge/cmake")
set(OpenCV_DIR "/usr/local/opencv-4.6.0/bulid/")
include_directories(${catkin_INCLUDE_DIRS} ${CERES_INCLUDE_DIRS} ${my_cv_bridge_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
nav_msgs
camera_models
my_cv_bridge
roslib
)
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/lemontech/thirdlib/cv_bridge_ws/devel")
set(my_cv_bridge_DIR "/home/lemontech/thirdlib/cv_bridge_ws/devel/share/my_cv_bridge/cmake")
#-DEIGEN_USE_MKL_ALL")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")
set(OpenCV_DIR "/usr/local/opencv-4.6.0/bulid/")
include_directories(${catkin_INCLUDE_DIRS} ${CERES_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} ${my_cv_bridge_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
cmake_minimum_required(VERSION 2.8.3)
project(loop_fusion)
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-std=c++17")
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/lemontech/thirdlib/cv_bridge_ws/devel")
set(my_cv_bridge_DIR "/home/lemontech/thirdlib/cv_bridge_ws/devel/share/my_cv_bridge/cmake")
#-DEIGEN_USE_MKL_ALL")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")
set(OpenCV_DIR "/usr/local/opencv-4.6.0/bulid/")
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
nav_msgs
camera_models
my_cv_bridge
roslib
)
find_package(OpenCV)
find_package(Ceres REQUIRED)
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(Eigen3)
include_directories(${catkin_INCLUDE_DIRS} ${CERES_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} ${my_cv_bridge_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
catkin_package()
add_executable(loop_fusion_node
src/pose_graph_node.cpp
src/pose_graph.cpp
src/keyframe.cpp
src/utility/CameraPoseVisualization.cpp
src/ThirdParty/DBoW/BowVector.cpp
src/ThirdParty/DBoW/FBrief.cpp
src/ThirdParty/DBoW/FeatureVector.cpp
src/ThirdParty/DBoW/QueryResults.cpp
src/ThirdParty/DBoW/ScoringObject.cpp
src/ThirdParty/DUtils/Random.cpp
src/ThirdParty/DUtils/Timestamp.cpp
src/ThirdParty/DVision/BRIEF.cpp
src/ThirdParty/VocabularyBinary.cpp
)
target_link_libraries(loop_fusion_node ${catkin_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES})
Wenn die Kompilierung erfolgreich ist und das Funktionspaket my_cv_bridge in find_package korrekt identifiziert werden kann, können die oben genannten drei Dateien in der Entwicklungsdatei von vins-fusion abgerufen werden.Es ist dasselbe wie die Installation der offiziellen cv_bridge, außer dass sich das offizielle Paket in opt/ros/noetic/… befindet.
Dieser Fehler tritt auf. Nun, es ist ein Konflikt zwischen opencv4.2 und 4.6, aber ich habe offensichtlich cv_bridge und opencv durch mein eigenes ersetzt! ! Dann. . . Ich habe cv_bridge-extras.cmake unter my_cv_bridge/cmake überprüft und festgestellt, dass dort immer noch 4.2 steht!!!
Nachfolgend finden Sie die korrekte Version nach der Änderung
a. (1) Ändern Sie die Version auf 4.6
B. (2) opencv_config_path - Verzeichnis/usr/local/opencv-4.6.0/lib/cmake/opencv4
Dann habe ich /usr/local/opencv-4.6.0/lib/cmake/opencv4 geöffnet und festgestellt, dass der Satz (OpenCV_VERSION 4.2.0) im Bild unten 4.2 und nicht 4.6 lautet!!! Korrigieren und neu kompilieren
rm -rf build
mkdir build && cd build
cmake ..
make -j8
sudo rm /usr/local/lib/libopencv_*4.2*
Dann befinden sich möglicherweise verwandte Dateien in /var und verwenden dieselbe Löschmethode.
2. Überprüfen Sie den Pfad zur opencv-Bibliothek. Die Linkdateien der Bibliothek befinden sich alle unter dieser Datei:
sudo find / -iname "*opencv*"
sudo ldconfig
set(CMAKE_CXX_FLAGS "-std=c++17")指定了c++17标准进行编译
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/lemontech/thirdlib/cv_bridge_ws/devel") 这个设置将/home/lemontech/thirdlib/cv_bridge_ws/devel路径添加到cmake的前缀路径中,以便CMake可以在路径中找到依赖项和包
set(my_cv_bridge_DIR "/home/lemontech/thirdlib/cv_bridge_ws/devel/share/my_cv_bridge/cmake")设置置顶了my_cv_bridge包的CMake配置文件路径,以便CMake可以找到并使用这个包
find_package(catkin REQUIRED COMPONENTS
my_cv_bridge
roscpp
)用于查找并配置指定的catkin包和组件,catkin是ros的构建系统,REQUIRED表示这些组件是必须的,如果缺少,会报错)