gpt4 book ai didi

java - 如何在openCV中将轮廓转换到图像的中心?

转载 作者:行者123 更新时间:2023-12-02 04:48:40 27 4
gpt4 key购买 nike

我正在android中开发一个图像处理项目。目前我的任务是提取对象并将其转换到图像的中心,以便我可以轻松地从中提取特征。我已经提取了该对象,现在我想将其平移到图像的中心并旋转它,以将其水平对齐在图像上。

我正在 Android 中使用 OpenCV 进行图像处理。非常感谢任何帮助。谢谢

最佳答案

我建议采用以下技术..

vector<point>contour -- opencv 轮廓是点的 vector 。这样您就可以按照您想要的距离翻译它们。所以在 C++ 中我会执行以下操作来翻译轮廓

void shifcontour(vector<Point>& contour, int x, int y)
{
for (size_t i=0; i<contour.size(); i++)
{
contour[i].x += x;
contour[i].y += y;
}
}

要找到 x 和 y,您可以使用图像中心和轮廓中心之间的差异。您可以使用 fitEllipse 来计算轮廓的中心。这将为您提供轮廓中心的粗略近似值。您还将获得轮廓指向的角度..

(x_centre,y_centre),(majoraxis,minoraxis),angle = cv2.fitEllipse(contour)

现在正在翻译您的轮廓。接下来你必须旋转它,使其水平对齐。您可以使用opencv提供的仿射变换将图像旋转指定的角度。

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html

希望这有帮助。

关于java - 如何在openCV中将轮廓转换到图像的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29456332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com