试图让 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 工作的时间很糟糕的主要内容,如果未能解决你的问题,请参考以下文章

试图让 emscripten 在电子领域工作

[OpenCV实战]32 使用OpenCV进行非真实感渲染

如何在 OpenCV 中使用相机

OpenCV 校准代码

OpenCV:在 IYUV 中保存视频

如何让 OpenCV 在 Windows 下工作?