在 Raspberry Pi Stretch 上安装 opencv 3.3.0 时出现 cv2 文件中的无效转换错误

Rav*_*rdi 5 c++ python opencv raspberry-pi3

我正在尝试在 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
Run Code Online (Sandbox Code Playgroud)

我试过这些命令

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 ..
Run Code Online (Sandbox Code Playgroud)

#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;
Run Code Online (Sandbox Code Playgroud)

}

小智 2

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

总而言之:

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

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

sudo pip3 install opencv-contrib-python
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get install python-opencv
Run Code Online (Sandbox Code Playgroud)

4)对于python3,

sudo apt-get install python3-opencv
Run Code Online (Sandbox Code Playgroud)

请告诉我是否有效。:)