我正在尝试沿轮廓裁剪右侧的图片。该对象是使用冲浪特征检测的,而不是我想完全按照检测到的那样裁剪图像。
使用裁剪时,其他对象的一些外部边界包括在内。我想沿着下面的绿线裁剪。OpenCV 有RotatedRect
,但我不确定它是否适合裁剪。
有没有办法沿着绿线完美裁剪
我正在尝试沿轮廓裁剪右侧的图片。该对象是使用冲浪特征检测的,而不是我想完全按照检测到的那样裁剪图像。
使用裁剪时,其他对象的一些外部边界包括在内。我想沿着下面的绿线裁剪。OpenCV 有RotatedRect
,但我不确定它是否适合裁剪。
有没有办法沿着绿线完美裁剪
您可以从每个端点获取线的方程。使用这些方程来检查任何给定的像素是否位于绿色框内,即它是否位于左右线之间以及顶线和底线之间。在整个图像上运行它并将不在框中的任何内容重置为黑色。
不确定执行此操作的内置功能,但这种简单的方法可以保证有效。为了获得更高的准确性,您可能需要考虑亚像素检查。
我假设你从http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html得到你的例子,所以你可以做的是找到绿色边界框周围的最小轴对齐边界框,从图像中裁剪它,使用反向单应性 ( H.inv()
) 矩阵将该子图像转换为新图像(调用cv::warpPerspective
),然后裁剪绿色边界框(它应该在新图像中与轴对齐)。