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