我正在为 Windows 商店编写一个应用程序,该应用程序使用 Canny 边缘检测来查找图像上文档的边界。找到角落后,我需要能够裁剪此图像。我可以使用 WriteableBitmapExtension 方法裁剪矩形,但问题是它很少是矩形,而是四边形。
我读到了一个叫做 Aforge 的东西,它可能可以做到,但它不支持看起来像的 Silverlight/WinRT。我知道这应该可以通过 OpenGL 实现,但很可能需要我更改大部分应用程序。有没有其他选择?
我正在为 Windows 商店编写一个应用程序,该应用程序使用 Canny 边缘检测来查找图像上文档的边界。找到角落后,我需要能够裁剪此图像。我可以使用 WriteableBitmapExtension 方法裁剪矩形,但问题是它很少是矩形,而是四边形。
我读到了一个叫做 Aforge 的东西,它可能可以做到,但它不支持看起来像的 Silverlight/WinRT。我知道这应该可以通过 OpenGL 实现,但很可能需要我更改大部分应用程序。有没有其他选择?
您可以使用WriteableBitmapEx 实现它,使用Blit 和n alpha 掩码为您要裁剪的区域。只需使用 Canny 边缘检测的结果动态创建掩码。确保要保留的所有像素的 alpha 值为 255,而要裁剪的像素在遮罩位图中的 alpha 值为 0。然后在原始图像上使用 Blit 方法,提供生成的 alpha 蒙版位图作为参数和 BlendMode.Alpha。这不会真正减小原始图像的大小,但至少不需要的像素消失了。在 alpha 遮罩之前,您已经可以使用边缘检测结果中的 x 和 y 的最小值、最大值来裁剪矩形。这样,尺寸也会减小,并且您的 alpha 遮罩应该更快作为奖励。