使用cv2.imshow时出错(未指定错误)

时间:2016-12-27 17:58:06

标签: python opencv anaconda

我正在关注this tutorial进行角点检测,我必须使用cv2.imshow。这是我的代码:

import cv2
import numpy as np

filename = '1.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,3,0.04)

#result is dilated for marking the corners, not important
dst = cv2.dilate(dst,None)

# Threshold for an optimal value, it may vary depending on the image.
img[dst>0.01*dst.max()]=[0,0,255]

cv2.imshow('dst',img)

我收到了这个错误:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /root/mc-x86-2.7/conda-bld/opencv-3_1482254836916/work/opencv-3.1.0/modules/highgui/src/window.cpp, line 545
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cv2.error: /root/mc-x86-2.7/conda-bld/opencv-3_1482254836916/work/opencv-3.1.0/modules/highgui/src/window.cpp:545: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage

所以,我安装了libgtk2.0-dev和pkg-config,但它没有解决问题。错误消息说运行cmake但在哪里?我的驱动器中没有CMakeLists.txt文件。

然后,我在这个网站上关注一些答案,如this one:首先,我直接在网站上下载了OpenCV,然后运行cmake,make和make install。一切都没问题,但是当我使用Anaconda时仍然有同样的错误但是当我从/ usr / bin / python打开Python时它又收到了另一条消息:

init done 
opengl support available 

目前,我无法展示我的形象。我该怎么办?

2 个答案:

答案 0 :(得分:2)

在我的问题中,我有两个问题:

  1. 从/ usr / lib / python,我无法显示图像,但我没有 有错误;

  2. 使用Anaconda Framework,函数imshow没有实现。

  3. 对于第一个问题,这很容易,因为我没有正确阅读文档。它说,关于cv2.waitKey()函数:

      

    除了绑定键盘事件外,此功能还可以处理许多事件   其他GUI事件,所以你必须用它来实际显示图像。

    所以,我只需要在cv.imshow()之后调用cv2.waitKey(1)来显示图像。

    对于第二问题,

    • 我用手动方法来解决它(我不确定它是最好的但它有效)。我用libopencv*文件夹中的/home/user/anaconda3/lib文件替换了libopencv*文件夹中的所有/usr/local/lib/个文件。

    • 之后,我不得不更新`/home/user/anaconda3/lib/libstdc++.so'文件与&#39; / usr / lib / i386-linux-gnu / libstdc ++。所以&#39;文件

    还有一个更清洁的替代方案,但您应该重新启动安装过程来执行此操作。当您运行cmake命令时,参数-D CMAKE_INSTALL_PREFIX必须引用您的anaconda文件夹(对我而言,它是/home/pierre/anaconda3/)。之后,您只需像往常一样继续安装:

    make
    sudo make install
    

    现在,您可以将OpenCV与Anacaonda一起使用(但仅限于Anaconda;如果您加载/usr/bin/python,它就不起作用。)

答案 1 :(得分:0)

使用以下命令从conda环境中使用cv2安装pip

pip install opencv-python

pip提供的轮子不包含此错误。