【问题标题】:Invalid conversion error in cv2 file while installing opencv 3.3.0 on Raspberry Pi Stretch在 Raspberry Pi Stretch 上安装 opencv 3.3.0 时 cv2 文件中出现无效转换错误
【发布时间】:2019-11-12 17:09:04
【问题描述】:

我正在尝试在 raspberry pi 3 上构建 opencv 3.3.0,但在 93% 时遇到错误说转换无效。下面提供了详细信息,任何帮助将不胜感激。请帮忙。

此错误消息正在显示。

 /home/pi/opencv-3.3.0/modules/python/src2/cv2.cpp: In function ‘bool pyopencv_to(PyObject*, T&, const char*) [with T = cv::String; PyObject = _object]’:/home/pi/opencv-3.3.0/modules/python/src2/cv2.cpp:854:34: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive] char* str = PyString_AsString(obj);In file included from /home/pi/opencv-3.3.0/modules/python/src2/cv2.c

我试过这些命令

cd ~/opencv-3.3.0/

$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
    -D BUILD_EXAMPLES=ON ..

#cv2.cpp 代码在错误位置。

template<>
bool pyopencv_to(PyObject* obj, String& value, const char* name)
{
 (void)name;
 if(!obj || obj == Py_None)
    return true;
 char* str = PyString_AsString(obj);
 if(!str)
    return false;
 value = String(str);
 return true;

}

【问题讨论】:

    标签: python c++ opencv raspberry-pi3


    【解决方案1】:

    我会使用sudo apt-get install python3-opencv;但是如果你需要 CMake 编译版本,比如 ROS,那么它似乎是 OpenCV 中的一个错误;在我在 opencv3/modules/python/src2/cv2.cpp lin 885 进行以下更改后,它为我编译。改变...

    char* str = PyString_AsString(obj);

    const char* str = PyString_AsString(obj);

    【讨论】:

      【解决方案2】:

      我也遇到过同样的现象。这很难,因为编译需要很多时间,我花了半天多的时间来解决这个问题。

      TLDR:

      1) 不再推荐构建opencv。放弃从源头构建。

      2) 树莓派提供opencv轮。试试这个。

      sudo pip3 install opencv-contrib-python
      

      3) 如果不起作用,只需使用 apt-get

      sudo apt-get install python-opencv
      

      4) 对于python3,

      sudo apt-get install python3-opencv
      

      请让我知道它是否有效。 :)

      【讨论】:

      • 感谢您的努力。确实,在树莓派上构建 opencv 不是一个聪明的方法,有网站 www.piwheels.org 提供预编译包。
      【解决方案3】:

      经过 3 天的挫折,我发现,opencv 实际上充满了错误,而且并不总是你的错。我在 Raspberry pi stretch 上运行了 Opencv 版本 4(以前我尝试过 Opencv 3.3.0),它顺利编译,没有出现任何错误。另一件事是确保在编译之前已将交换空间增加到 2048。

      /etc/dphys-swapfile

      从 100 变成 2048。

      编码愉快..!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-08
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        • 1970-01-01
        • 2015-01-26
        • 2021-07-12
        • 2016-11-22
        相关资源
        最近更新 更多