我正在尝试在树莓派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;
}
答案 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。
祝您编码愉快!!