c++ opencv fillpoly函数的注意事项

在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;
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> ppts;,否则无法正常使用。若使用vector pts;`,会导致程序中断,但不会在编译器中报错。

原文链接: https://www.cnblogs.com/DreiHunde/p/14991203.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++ opencv fillpoly函数的注意事项

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/212025

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午1:06
下一篇 2023年2月13日 上午1:06

相关推荐