τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Το σφάλμα που είχε προσαρμοστεί για περισσότερο από μια μέρα επιλύθηκε τελικά... και δημοσιεύτηκε για αναφορά σας.
Χάρη σε αυτόν τον τύπο για τον κωδικό του, όλα τα περιεχόμενα μπορούν να εφαρμοστούν σωστά: διαμόρφωση ubuntu20.04 vins-fusion+opencv4.6
Αυτό το άρθρο είναι επίσης υπέροχο, μπορείτε να ανατρέξετε στο: Σφάλμα κατά την εκτέλεση του lvi-sam στο ubuntu20.04! Πρόβλημα σύγκρουσης μεταξύ της βιβλιοθήκης Opencv και του πακέτου cv_bridge
Κυκλοφορία OpenCV 4.6.0 · opencv/opencv · GitHub
Έκδοση 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 στο 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
πηγή ~/.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})
Εάν η μεταγλώττιση είναι επιτυχής και το πακέτο συναρτήσεων my_cv_bridge στο find_package μπορεί να αναγνωριστεί σωστά, τα παραπάνω τρία αρχεία μπορούν να ληφθούν στο αρχείο ανάπτυξης του vins-fusion.Είναι το ίδιο με την εγκατάσταση του επίσημου cv_bridge, με τη διαφορά ότι το επίσημο πακέτο είναι στο opt/ros/noetic/…
Αυτό το σφάλμα παρουσιάζεται, λοιπόν, είναι μια σύγκρουση μεταξύ opencv4.2 και 4.6, αλλά προφανώς έχω αντικαταστήσει τα cv_bridge και opencv με τα δικά μου! ! Επειτα. . . Έλεγξα το cv_bridge-extras.cmake κάτω από το my_cv_bridge/cmake και βρήκα ότι λέει ακόμα 4.2!!!
Παρακάτω είναι η σωστή έκδοση μετά την τροποποίηση
α. (1) Αλλάξτε την έκδοση σε 4.6
σι. (2)opencv_config_path设置为/usr/local/opencv-4.6.0/lib/cmake/opencv4
Μετά, άνοιξα το /usr/local/opencv-4.6.0/lib/cmake/opencv4 και διαπίστωσα ότι το σετ (OpenCV_VERSION 4.2.0) στην παρακάτω εικόνα έλεγε 4.2, όχι 4.6
rm -rf build
mkdir build && cd build
cmake ..
make -j8
sudo rm /usr/local/lib/libopencv_*4.2*
Στη συνέχεια, ενδέχεται να υπάρχουν σχετικά αρχεία στο /var και να χρησιμοποιούν την ίδια μέθοδο διαγραφής.
2. Ελέγξτε τη διαδρομή που σχετίζεται με τη βιβλιοθήκη opencv Τα αρχεία συνδέσμων της βιβλιοθήκης βρίσκονται όλα κάτω από αυτό το αρχείο:
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表示这些组件是必须的,如果缺少,会报错)