OpenCV报错:功能未实现

Posted

技术标签:

【中文标题】OpenCV报错:功能未实现【英文标题】:OpenCV error: the function is not implemented 【发布时间】:2013-01-17 08:04:10 【问题描述】:

我正在尝试让 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 时,它给了我同样的错误。我错过了什么吗?

【问题讨论】:

您尝试过更新的cv2 模块吗?此外,opencv 和 python 绑定都在存储库中,无需下载或编译任何东西 【参考方案1】:

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

pip uninstall opencv-python-headless

【讨论】:

我在 Windows 上,只有这种方法对我有用。也看看 Github:github.com/opencv/opencv-python/issues/…【参考方案2】:

如果 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)。该功能未实现。)。我正在使用蟒蛇。仅以下 2 个步骤帮助我解决了问题:

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

如果你用的是pip,可以试试

pip install opencv-contrib-python

【讨论】:

Apt-get 为我做了。谢谢! sudo apt-get install libqt4-dev --> command not found 错误,我正在使用 ios 应用程序。 末尾的.. 不正确。尝试. 或将目录更改为build/ 文件夹。 卸载 opencv-python 并从源代码构建它帮助我解决了问题 谢谢 问题出在OpenCV版本【参考方案3】:

不要浪费时间尝试解决此问题,制造商自己已经明确了这一点。而不是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()

【讨论】:

谢谢,您的解决方案在这里更有意义,为什么人们选择黑客? 互动呢?你也不能使用cv.waitKey() #cv2.imshow('Video', frame) img = cv2.imread('Video',frame) error:TypeError: only size-1 arrays can be converted to Python scalars 如何从cv2.imshow('Video', frame) 更改为您的代码?谢谢! @Gank 我猜你现在已经想通了。对于那些赶时间的人:# cv2.imshow('Faces', frame) img = cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 200, 0), 2) plt.imshow(img, cmap='gray') plt.show()【参考方案4】:

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

【讨论】:

你能澄清为什么这很重要吗?为什么要先卸载opencv?【参考方案5】:

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

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

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

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

【讨论】:

【参考方案6】:

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

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

conda install -c menpo opencv=2.4.11

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

【讨论】:

这对我来说不适用于 python 3.5.2。其他人推荐的安装 libopencv-* 也没有。我制作了一个 2.7 的虚拟环境,这在该环境中有效。谢谢!但我希望一切都与 python3 一起工作......我们都应该在几年前升级 lol @JulianCienfuegos,我在其中一个虚拟环境中有 conda 4.3.11 和 python 3.5.2,它通过键入 conda install opencv 安装 OpenCV 3.1.0。如果您的 conda 较旧,则 conda 更新可能会修复它。

以上是关于OpenCV报错:功能未实现的主要内容,如果未能解决你的问题,请参考以下文章

opencv错误:错误:OpenCV(4.2.0)/io/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1210:错误:(-213:功能/功能未实现)

在 OpenCV 中使用 Qt 控制面板功能报错 NULL 指针

OpenCV之未定义:FaceRecognizer

opencvJava实现的opencv3.x版本后Highhui报错

Linux学习OpenCV+ROS 实现人脸识别(Ubantu16.04)

《python + opencv实现目标检测》