无法在C++中运行OpenCV GUI功能,求助排查依赖问题
解决OpenCV C++版GUI功能无法运行的问题
第一步:彻底清理现有OpenCV安装
避免手动编译与apt安装的版本冲突,先完全清理:
- 卸载apt安装的相关包:
sudo apt purge -y libopencv-dev opencv-data sudo apt autoremove -y sudo apt autoclean - 删除手动编译安装的文件:
sudo rm -rf /usr/local/lib/libopencv* sudo rm -rf /usr/local/include/opencv* sudo rm -rf /usr/local/lib/cmake/opencv* - 删除项目目录下
thirdparty中的OpenCV包,以及之前编译生成的build文件夹
第二步:安装完整GUI依赖
确保所有GUI相关依赖齐全,同时兼容GTK2/GTK3:
sudo apt update sudo apt install -y build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \ gfortran openexr libatlas-base-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libdc1394-22-dev
第三步:重新编译OpenCV 4.9.0(启用GUI支持)
- 拉取对应版本的源码:
git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git cd opencv git checkout 4.9.0 cd ../opencv_contrib git checkout 4.9.0 cd ../opencv mkdir build && cd build - 配置CMake,强制启用GTK支持:
配置完成后,检查输出的cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -D BUILD_EXAMPLES=ON \ -D WITH_GTK=ON \ -D WITH_GTK3=ON ..GUI:模块,确认GTK+: YES(显示对应版本号),若为NO则回到第二步重新安装依赖。 - 编译并安装:
make -j$(nproc) sudo make install sudo ldconfig
第四步:配置项目CMakeLists.txt
确保CMake正确识别带GUI的OpenCV,示例配置:
cmake_minimum_required(VERSION 3.10) project(opencv_gui_test) find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(opencv_gui_test main.cpp) target_link_libraries(opencv_gui_test ${OpenCV_LIBS})
第五步:验证运行
使用官方测试代码(需准备一张test.jpg图片):
#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat img = imread("test.jpg"); if (img.empty()) { printf("Could not read the image\n"); return 1; } namedWindow("Display window", WINDOW_AUTOSIZE); imshow("Display window", img); waitKey(0); return 0; }
编译运行:
mkdir build && cd build cmake .. make ./opencv_gui_test
额外排查点
- 若仍报错,检查运行时库路径是否正确:
确保所有OpenCV库指向ldd ./opencv_gui_test | grep opencv/usr/local/lib下的文件。 - 若CMake无法找到OpenCV,手动指定路径:
set(OpenCV_DIR "/usr/local/lib/cmake/opencv4") find_package(OpenCV REQUIRED)
内容的提问来源于stack exchange,提问作者Vincent Pelletier
相关产品推荐
相关产品推荐

