OpenCV v1/v2 错误:函数未实现

73 投票
8 回答
200694 浏览
提问于 2025-04-17 14:29

我正在尝试在我的Ubuntu电脑上用Python运行OpenCV。我已经下载并安装了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时,还是出现了同样的错误。我是不是漏掉了什么?

8 个回答

39

如果你之前通过 opencv-python 这个 pip 包安装过 OpenCV,下面有一些重要的注意事项,摘自 https://pypi.python.org/pypi/opencv-python

重要提示 目前 MacOS 和 Linux 的安装包有一些限制:

  • 与视频相关的功能不支持(没有和 FFmpeg 一起编译)
  • 比如 cv2.imshow() 这个函数是无法使用的(没有和 GTK+ 2.x 或 Carbon 支持一起编译)

另外,如果你想从其他来源安装,首先需要卸载 opencv-python 包。

44

别浪费时间去解决这个问题,开发者自己已经说得很清楚了。与其使用 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()
83

如果你在使用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)。但是因为你在/usr/local/lib里有OpenCV 2.4.3,所以要把这个路径加到/etc/ld.so.conf里,然后运行ldconfig。这样每次你使用OpenCV的时候,就会用到最新的版本。这不是最好的方法,但如果你在qt或gtk上还遇到问题,可以试试这个。应该能解决问题。

更新 - 2019年6月18日

我在我的Ubuntu(18.04.1 LTS)系统上使用OpenCV 3.4.2时遇到了这个错误,因为调用cv2.imshow的方法失败了(例如,在cv2.namedWindow(name)这一行出现错误:cv2.error: OpenCV(3.4.2). 这个函数没有实现。)。我使用的是anaconda。下面这两个步骤帮我解决了这个问题:

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

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

pip install opencv-contrib-python

撰写回答