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

时间:2019-07-02 05:30:45

标签: python c++ opencv raspberry-pi3

我正在尝试在树莓派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;

}

3 个答案:

答案 0 :(得分:1)

我遇到了同样的现象。由于编译需要很多时间,因此我花了半天的时间来解决此问题,所以这很困难。

TLDR:

1)不建议再构建opencv。从源头放弃建设。

2)Raspberry pie提供了opencv轮。试试这个。

sudo pip3 install opencv-contrib-python

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

sudo apt-get install python-opencv

4)对于python3,

sudo apt-get install python3-opencv

请告诉我它是否有效。 :)

答案 1 :(得分: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 :(得分:0)

经过三天的挫折,我发现,opencv实际上充满了错误,并不总是您的错。我在Raspberry pi Stretch上运行了Opencv版本4(以前我尝试使用Opencv 3.3.0),并且编译顺利,没有一个错误。还有一件事是要确保在编译之前将交换空间增加到2048。

  

/ etc / dphys-swapfile

从100设为2048。

祝您编码愉快!!