我想识别我的UIImageView
(或UIImage
)内的正方形/矩形。
我查看了“ iOS 上非常简单的图像识别”,但这并不是我想要的。
目前我有一个不时UIImageView
给出的。UIImage
大多数UIImage
es 都有这样的黑色正方形/矩形:
. 但是角落可能(或可能没有)有圆形边缘。
如何识别第一个黑色正方形/矩形的大小?最终结果将是调整我的大小UIImageView
以使第一个黑色方块UIImage
填满屏幕。像这样:
我想识别我的UIImageView
(或UIImage
)内的正方形/矩形。
我查看了“ iOS 上非常简单的图像识别”,但这并不是我想要的。
目前我有一个不时UIImageView
给出的。UIImage
大多数UIImage
es 都有这样的黑色正方形/矩形:
. 但是角落可能(或可能没有)有圆形边缘。
如何识别第一个黑色正方形/矩形的大小?最终结果将是调整我的大小UIImageView
以使第一个黑色方块UIImage
填满屏幕。像这样:
如果您的图像在水平行中始终是锐利的黑色方块,您可以使用角检测来识别矩形,然后挑选出最左边的四个角。在基于 Harris、Noble 和 Shi-Tomasi 角点检测方法的开源GPUImage框架中,我有三种角点检测器变体。
对阈值为 0.4 且灵敏度为 4.0 的框运行 GPUImageHarrisCornerDetectionFilter 会产生以下结果:
它们有点难以看到,但红色十字准线标记了探测器发现盒子角落的位置。同样,您只需要使用最左边的四个点来找到您的目标矩形,然后简单地缩放您的图像或视图,以便该矩形现在填充您的视图。
可以在我的框架中的 FilterShowcase 或 FeatureExtractionTest 示例中找到如何运行此类特征检测的示例。我在 Signal Processing的这个答案中描述了我这样做的过程。
似乎最简单的解决方案是:
宽度可以从(2)得出。
根据我对您的问题的理解,您需要实施Canny 边缘检测算法来检测图像中黑色边框的边缘。
为此,您应该使用以下链接中提供的图像处理框架
使用Image.m文件中的ImageWrapper *Image::cannyEdgeExtract(float tlow, float thigh)
函数。