试图让 OpenCV 工作的时间很糟糕
Posted
技术标签:
【中文标题】试图让 OpenCV 工作的时间很糟糕【英文标题】:Having an awful time trying to get OpenCV to work 【发布时间】:2016-04-26 00:21:03 【问题描述】:我正在尝试按照本教程使用 python/opencv 计算从相机到物体的距离:http://www.pyimagesearch.com/2015/01/19/find-distance-camera-objectmarker-using-python-opencv/
我在一个 ubuntu 盒子上。我使用 pip 很容易地安装了 numpy,但是我很难让 opencv 工作。我通过这篇文章从源安装它:http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/
一切似乎都正确安装了......当我运行dpkg -l | grep libopencv
时,我明白了
ii libopencv-calib3d2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Camera Calibration library
ii libopencv-contrib2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision contrib library
ii libopencv-core2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision core library
ii libopencv-features2d2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Feature Detection and Descriptor Extraction library
ii libopencv-flann2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Clustering and Search in Multi-Dimensional spaces library
ii libopencv-highgui2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision High-level GUI and Media I/O library
ii libopencv-imgproc2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Image Processing library
ii libopencv-legacy2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision legacy library
ii libopencv-ml2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Machine Learning library
ii libopencv-objdetect2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Object Detection library
ii libopencv-photo2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision computational photography library
ii libopencv-video2.4:amd64 2.4.8+dfsg1-2ubuntu1 amd64 computer vision Video analysis library
但是当我下载源代码并从第一个链接运行代码时,我得到了这个错误:
OpenCV Error: Assertion failed (step[dims-1] == (size_t)CV_ELEM_SIZE(flags)) in create, file /home/nitrous/opencv-2.4.9/modules/core/src/matrix.cpp, line 236
Traceback (most recent call last):
File "distance_to_camera.py", line 41, in <module>
marker = find_marker(image)
File "distance_to_camera.py", line 16, in find_marker
(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cv2.error: /home/nitrous/opencv-2.4.9/modules/core/src/matrix.cpp:236: error: (-215) step[dims-1] == (size_t)CV_ELEM_SIZE(flags) in function create
【问题讨论】:
【参考方案1】:使用你的包管理器:
sudo apt-get install python-opencv
如果您想要 Python3 版本,请将其更改为 python3-opencv。它将为您安装所有依赖项,包括 python-numpy。
请不要对 aptitude 中的全局包使用 pip,如果使用 pip,这些是由系统和 YMMV 处理的(如上所示)。如果您想使用 pip,请创建一个 virtualenv 来安装各个包。
对于任何未来的包,要检查包是否在 aptitude 中可用,只需运行:
apt-cache search python-package
或
apt-cache search python3-package
这会让您知道是否有任何安装候选者。如果包的 -dev 版本可用,您可能还想安装它。
【讨论】:
我已经做到了,这是结果sudo apt-get install python-opencv Reading package lists... Done Building dependency tree Reading state information... Done python-opencv is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded
你试过了吗:import cv2
(这会导入 Open CV2)。这可能意味着您的模块已经安装。
是的,在我正在使用的代码的第 2 行,我有这个:import cv2
以上是从 aptitude 安装程序导入 CV2 的追溯吗?还是来自编译版本的回溯?
它是从我尝试在第一个链接中运行 python 文件时开始的。以上是关于试图让 OpenCV 工作的时间很糟糕的主要内容,如果未能解决你的问题,请参考以下文章