我正在研究android中的图像处理项目。目前我的任务是提取对象并将其转换为图像的中心,以便我可以轻松地从中提取特征。 我已经提取了对象,现在我想将其转换为图像的中心并旋转它,使其在图像上水平对齐。
我在Android中使用OpenCV进行图像处理。 任何帮助都非常感谢。感谢
答案 0 :(得分:1)
我建议遵循以下技术..
vector<point>contour
- opencv轮廓是点的向量。所以你可以按照你想要的距离翻译它们。所以在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
希望这有帮助。