前言:关于古月居《ROS机器人开发实践一书中》机器视觉一章python文件报错的解决
本人系统:ubuntu20.04
ROS:noetic
python版本
ubuntu20.04的python版本为python3,所以对python的引用要修改为python3:
#!/usr/bin/env python要修改为#!/usr/bin/env python3
语法问题
由于python版本{包括opencv版本也有更新}不一样,所以需要修改一些语法
- except CvBridgeError , e:改为except CvBridgeError as e:
- print之后的内容需要加以括号
- 这个也是最不容易发现的,在识别物体的motion_detector.py文件里如果直接运行,会报错如下
ValueError: not enough values to unpack (expected 3, got 2)
原因是 cv2.findContours的opencv旧版本是返回3个值:
im2, contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE),
但是新版本返回2个值:
contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)。
原代码:binary,cnts, hierarchy = cv2.findContours(img_gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
应该改为: cnts, hierarchy = cv2.findContours(img_gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
问题3转载于博客