在python中, cv2.polylines和cv2.fillpoly对于参数pts的要求是一致的,而在c++中是不一致的。
python中,传参方式为:
image = np.zeros(512, 512, np.uint8)
pts = []
pts.append([x, y]) # 添加顶点
pts = pts.reshape((-1, 1, 2))
# 这里 reshape 的第一个参数为-1, 表明这一维的长度是根据后面的维度的计算出来的。
# OpenCV中需要先将多边形的顶点坐标变成顶点数×1×2维的矩阵,再来绘制
# --------------画多边形---------------------
image = cv2.polylines(image , [pts], True, (255, 255, 255))
##-------------填充多边形---------------------
image = cv2.fillPoly(image , [pts], (255, 255, 255))
很明显可以看出,ploylines函数和fillPoly函数传参相同
对于c++而言,代码则为:
`
Mat image = Mat::ones(512, 512, CV_8UC3)
vector
pts.push_back(Point(x, y));
polylines(image , pts, true, (255, 255, 255));
vector<vector<Point>> ppts;
ppts.push_back(pts);
fillPoly(image , ppts, (255, 255, 255));
很明显,polylines函数和fillPoly函数所需参数不同,fillPoly函数需要二维嵌套
vector<vector,否则无法正常使用。若使用
vector
原文链接: https://www.cnblogs.com/DreiHunde/p/14991203.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/212025
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!