python - 薛定谔元组,是元组而不是元组
问题描述
我有一个使用单个数值构建的元组元组
maxcontour = ( (minx,miny),(maxx,miny),(maxx,maxy),(minx,maxy) )
并且确实是一个元组
print (maxcontour)
((374, 0), (2553, 0), (2553, 3999), (374, 3999))
但是在需要元组的地方使用它时
cv2.polylines(img, maxcontour, True, (0,0,255), 5 )
我收到这个错误
错误:OpenCV(4.5.3):-1:错误:(-5:错误参数)在函数“折线”中重载解析失败:
- pts 不是数字元组
- 参数“pts”的预期 Ptr<cv::UMat>
我显然忽略了一些非常基本的东西,但我看不到什么;并且错误消息“Expected Ptrcv::UMat for argument 'pts'”没有太大帮助。
创建有效的“数字元组”的方法是cv.polylines()
什么?
解决方案
正如@Nathaniel Ford 所说,这些点需要是一个 numpy 数组
要绘制多边形,首先需要顶点坐标。将这些点放入一个形状为 ROWSx1x2 的数组中,其中 ROWS 是顶点数,它应该是 int32 类型。
所以
maxcontour = np.array( [[minx,miny],[maxx,miny],[maxx,maxy],[minx,maxy]],np.int32)
maxcontour = maxcontour.reshape((-1,1,2))
cv2.polylines(img, [maxcontour], True, (0,0,255))
推荐阅读
- python - 如何在 Tkinter 中让两个 Spin Boxes 独立工作
- visa - SCPI 是否允许重载命令?
- javascript - 您将如何隐藏用户不拥有的东西的编辑和删除按钮
- php - 带反勾的 PHP 变量返回 NULL 值
- c++ - 如何将 std::regex 对象定义为类中的 const 静态成员并在函数中使用它?
- vue.js - 最小化分页 Vue.js
- python - 使用参数值的滑块创建连续均匀分布的交互式图
- mysql - 设置具有多个日期范围的多个总和
- numpy-ndarray - np.where() 与 np.linspace()
- r - 自动创建数据子集