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 指针
opencvJava实现的opencv3.x版本后Highhui报错