You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在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支持)

  1. 拉取对应版本的源码:
    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
    
  2. 配置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则回到第二步重新安装依赖。
  3. 编译并安装:
    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

额外排查点

  • 若仍报错,检查运行时库路径是否正确:
    ldd ./opencv_gui_test | grep opencv
    
    确保所有OpenCV库指向/usr/local/lib下的文件。
  • 若CMake无法找到OpenCV,手动指定路径:
    set(OpenCV_DIR "/usr/local/lib/cmake/opencv4")
    find_package(OpenCV REQUIRED)
    

内容的提问来源于stack exchange,提问作者Vincent Pelletier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:41