Ubuntu环境下卸载OpenCV 3.1.0以解决cv2.imshow运行报错问题
解决OpenCV 3.1.0 cv2.imshow报错及重新编译指南
嘿,我来帮你一步步搞定这个OpenCV的问题~你遇到的cv2.imshow报错,确实是当初编译OpenCV时缺少GTK相关依赖导致的,下面是完整的解决流程:
第一步:彻底卸载现有OpenCV 3.1.0
首先得把旧的安装彻底清理干净:
- 如果你是源码编译安装的,回到当初的编译目录(比如
opencv-3.1.0/build),执行:sudo make uninstall cd .. sudo rm -rf build - 再清理系统里可能残留的OpenCV文件:
sudo rm -rf /usr/local/lib/python2.7/site-packages/cv2* sudo rm -rf /usr/local/lib/cv2* sudo rm -rf /usr/local/include/opencv* sudo rm -rf /usr/local/share/opencv* - 要是之前用过apt包管理器装过OpenCV,额外执行这几句:
sudo apt-get purge libopencv* sudo apt-get autoremove sudo apt-get clean
第二步:安装所有必要依赖
把编译OpenCV需要的依赖都装全,包括报错提示的库:
sudo apt-get update sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
第三步:重新编译安装OpenCV 3.1.0
现在带着正确的依赖重新编译:
- 回到OpenCV 3.1.0的源码根目录,新建一个build目录并进入:
mkdir build && cd build - 执行cmake配置,一定要明确开启GTK2支持(这是解决imshow报错的关键):
小贴士:执行完cmake后,看输出里的cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_GTK=ON ..GUI:部分,确认GTK+ 2.x显示为YES,说明依赖已经生效了。 - 开始编译(
-j4可以根据你的CPU核心数调整,比如8核就用-j8,加快编译速度):make -j4 - 安装编译好的库:
sudo make install - 更新系统库缓存,让系统识别到新安装的OpenCV:
sudo ldconfig
第四步:验证修复效果
回到samples/python目录,重新运行你的脚本:
python gabor_threads.py icub.jpg
这时候cv2.imshow应该就能正常弹出窗口显示图片啦~
如果重新编译时遇到具体问题(比如cmake报错、编译中断),把具体的错误信息贴出来,我再帮你针对性排查!
内容的提问来源于stack exchange,提问作者Idil




