如何在openCV中将轮廓转换为图像中心?

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

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

我建议按照技术..

vectorcontour – opencv contours是点的向量。 所以你可以按照你想要的距离翻译它们。 所以在c ++中,我将执行以下操作来转换轮廓

 void shifcontour(vector& contour, int x, int y) { for (size_t i=0; i 

要找到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

希望这可以帮助。