61

我试图让 OpenCV 在我的 Ubuntu 机器上与 Python 一起工作。我已经下载并安装了 OpenCV,但是当我尝试运行以下 python 代码时(它应该从网络摄像头捕获图像并将它们推送到屏幕上)

import cv

cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE)
capture = cv.CaptureFromCAM(0)

def repeat():
    frame = cv.QueryFrame(capture)
    cv.ShowImage("w1", frame)
    time.sleep(10)

while True:
    repeat()

我收到以下错误:

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

所以我按照他们的要求做:安装软件包,移动到我安装 OpenCV 的文件夹,然后运行

sudo make uninstall
make
sudo make install

但是当我尝试运行 python 时,它给了我同样的错误。我错过了什么吗?

4

6 回答 6

76

如果 gtk 出现错误,请尝试 qt。

sudo apt-get install libqt4-dev
cmake -D WITH_QT=ON ..
make
sudo make install

如果这不起作用,有一个简单的方法。

sudo apt-get install libopencv-*

这将下载所有必需的依赖项(尽管您似乎已经安装了所有必需的库,但您仍然可以尝试一次)。这可能会安装 OpenCV 2.3.1 (Ubuntu 12.04)。但是因为你有 OpenCV 2.4.3/usr/local/lib包含这个路径/etc/ld.so.conf并做ldconfig. 因此,现在无论何时使用 OpenCV,都将使用最新版本。这不是最好的方法,但如果您仍然遇到 qt 或 gtk 的问题,请尝试一次。这应该有效。

更新- 2019 年 6 月 18 日

我在 openCV 3.4.2 的 Ubuntu(18.04.1 LTS)系统上收到此错误,因为方法调用cv2.imshow失败(例如,在 cv2.namedWindow(name) 行出现错误:cv2.error: OpenCV(3.4 .2).该功能未实现。)。我正在使用蟒蛇。仅以下 2 个步骤帮助我解决了问题:

conda remove opencv
conda install -c conda-forge opencv=4.1.0

如果你使用 pip,你可以试试

pip install opencv-contrib-python
于 2013-02-01T23:07:52.060 回答
39

不要浪费时间试图解决这个问题,制造商自己已经明确了这一点。而不是cv2.imshow()使用这个:

img = cv2.imread('path_to_image')
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()
于 2017-12-14T20:04:25.097 回答
35

如果您在任何时候使用 opencv-python pip 包安装 OpenCV,请注意以下注释,取自https://pypi.python.org/pypi/opencv-python

重要提示 MacOS 和 Linux 轮子目前有一些限制:

  • 不支持视频相关功能(不使用 FFmpeg 编译)
  • 例如cv2.imshow()不起作用(未使用 GTK+ 2.x 或 Carbon 支持编译)

另请注意,要从其他来源安装,首先必须删除 opencv-python 包

于 2017-04-21T00:16:09.610 回答
8

我希望这个答案仍然有用,尽管问题似乎很老了。

如果您安装了 Anaconda,并且您的 OpenCV 不支持 GTK+(如本例所示),您只需键入

conda install -c menpo opencv=2.4.11

它将安装不会产生上述错误的合适 OpenCV 版本。此外,如果有一个作为 Anaconda 一部分的 OpenCV,它将重新安装以前安装的 OpenCV。

于 2016-11-26T16:05:45.500 回答
3

这是因为'opencv-python-headless'。卸载它!

pip uninstall opencv-python-headless
于 2021-07-10T14:44:23.197 回答
1

在安装 libgtk2.0-dev 和 pkg-config 或 libqt4-dev 之前。确保您已卸载 opencv。您可以通过在 python shell 上运行 import cv2 来确认这一点。如果失败,则安装所需的软件包并重新运行 cmake 。

于 2017-07-11T09:42:47.817 回答