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

Pie*_*rre 5 python opencv anaconda

我正在按照本教程进行角点检测,我必须使用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)
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

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
Run Code Online (Sandbox Code Playgroud)

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

于是,我按照一些答案这个网站就像这一个:第一,我直接下载OpenCV的网站上,我运行cmake,make和make install.一切都还可以,但是当我使用Anaconda时我仍然有同样的错误但是当我从/ usr/bin/python打开Python时它又得到了另一条消息:

init done 
opengl support available 
Run Code Online (Sandbox Code Playgroud)

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

Pie*_*rre 3

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

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

  2. 在 Anaconda 框架中,函数 imshow 没有实现。

对于第一个问题,这真的很简单,因为我没有正确阅读文档。它说,关于该cv2.waitKey()功能:

除了绑定键盘事件之外,该函数还处理许多其他 GUI 事件,因此您必须使用它来实际显示图像。

因此,我只需在 cv.imshow() 之后调用 cv2.waitKey(1) 即可显示图像。

对于第二个问题,

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

  • 之后,我必须使用“/usr/lib/i386-linux-gnu/libstdc++.so”文件更新“/home/user/anaconda3/lib/libstdc++.so”文件。


还有一个更干净的替代方案,但您应该重新启动安装过程才能做到这一点。当您运行该cmake命令时,参数-D CMAKE_INSTALL_PREFIX必须引用您的 anaconda 文件夹(对我来说,它是/home/pierre/anaconda3/)。之后,您只需像往常一样继续安装:

make
sudo make install
Run Code Online (Sandbox Code Playgroud)

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