OpenCV v1/v2 错误:函数未实现
我正在尝试在我的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 个回答
如果你之前通过 opencv-python 这个 pip 包安装过 OpenCV,下面有一些重要的注意事项,摘自 https://pypi.python.org/pypi/opencv-python
重要提示 目前 MacOS 和 Linux 的安装包有一些限制:
- 与视频相关的功能不支持(没有和 FFmpeg 一起编译)
- 比如
cv2.imshow()
这个函数是无法使用的(没有和 GTK+ 2.x 或 Carbon 支持一起编译)
另外,如果你想从其他来源安装,首先需要卸载 opencv-python 包。
别浪费时间去解决这个问题,开发者自己已经说得很清楚了。与其使用 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()
如果你在使用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