C# 是否有方法在Windows应用商店(WinRT)应用程序中从图像裁剪和反求四边形?

C# 是否有方法在Windows应用商店(WinRT)应用程序中从图像裁剪和反求四边形?,c#,windows-runtime,windows-store-apps,windows-store,writeablebitmapex,C#,Windows Runtime,Windows Store Apps,Windows Store,Writeablebitmapex,我正在为windows应用商店编写一个应用程序,它使用Canny边缘检测来查找图像上文档的边界。我需要能够裁剪这个图像一旦角落被发现。我可以使用WriteableBitmapExtension方法裁剪矩形,但问题是它很少是矩形,而是四边形 我读到了一个名为Aforge的东西,它可能能够做到这一点,但它看起来不支持Silverlight/WinRT。我知道这在OpenGL中应该是可能的,但这很可能需要我更改我的应用程序的很大一部分。有其他选择吗?对于要裁剪的区域,可以使用Blit和n alpha掩

我正在为windows应用商店编写一个应用程序,它使用Canny边缘检测来查找图像上文档的边界。我需要能够裁剪这个图像一旦角落被发现。我可以使用WriteableBitmapExtension方法裁剪矩形,但问题是它很少是矩形,而是四边形


我读到了一个名为Aforge的东西,它可能能够做到这一点,但它看起来不支持Silverlight/WinRT。我知道这在OpenGL中应该是可能的,但这很可能需要我更改我的应用程序的很大一部分。有其他选择吗?

对于要裁剪的区域,可以使用Blit和n alpha掩码,通过WriteableBitmapEx实现。只需根据Canny边缘检测的结果动态创建遮罩。确保所有要保留的像素在遮罩位图中的alpha值为255,而要裁剪的像素的alpha值为0。然后在原始图像上使用Blit方法,提供生成的alpha掩码位图作为参数,并提供BlendMode.alpha。这不会真正减小原始图像的大小,但至少不需要的像素消失了。
在使用alpha遮罩之前,可以使用边缘检测结果中x和y的最小值、最大值裁剪矩形。通过这种方式,大小也会减小,并且作为奖励,alpha掩蔽应该更快。

感谢您的回答,但是,听起来这样做只会掩蔽不需要的像素,而不会将生成的四边形反扭曲为矩形。这是正确的吗?如果它能做到这一点,那么除了迭代整个图像并使用SetPixel扩展方法外,还有没有更简单的方法来调整每个像素的alpha值?这种方法非常慢。提前再次感谢。