2012-06-17 43 views
1

这似乎是一个奇怪的问题,但我有一组照片,我想作为一个衰落的屏幕保护程序使用的,我想每个图片有一个附带的报价,但每个报价会在不同的地方,相对于图片。查找然后隐藏图像中的绘制形状?

而不是为每个图像的区域编码Rectangle,只需在图像中绘制一个矩形并将其绘制在其中即可。

现在,绘制的形状将是一个鲜明的,统一的彩色边框(例如青柠色),因为图片中不会出现颜色,并且它会显示在纯色背景上,例如黑色。我的问题是:如果我在每个图像上绘制一个柠檬绿矩形,那么我怎么能使用C#在图像中找到该矩形,获取它的尺寸,并用背景色代替石灰绿,所以在最终产品中,它看起来像是从来没有开始的形状?

我没有尝试过任何东西,我没有代码来展示,因为它是一个想法,我有,虽然我敢肯定,这一定是有可能,我甚至不知道开始寻找什么。

我希望这是可能的,如果不是,那么我就画为每一个矩形,但是这是一个不得已而为之。 :)

+0

绝对没有。这只是一个想法,因为我甚至不知道如何开始使用Google。 –

+0

您应该尝试自己制作,然后发布有关特定问题的问题。我们不能期望为您编写程序。 ;) – annonymously

+0

@匿名我不希望你为我写这篇文章,只是指出我在正确的方向;) –

回答

0

你有没有想过使用无论是emgucvaforge库?他们能够很容易地检测图像中的形状。虽然他们没有完美地检测边缘,但是如果你想要检测的只是一个矩形,任何一个都应该工作得很好。

下面是关于形状检测两个教程为emgu cvaforge。一旦你检测到了形状,那么你可以很容易地将其剪下来作为背景。例如,假设您使用aforge检测四边形(在链接中),那么您可以通过调用blobs[i].Rectangle;轻松获取矩形的位置和大小,并创建一个具有相同大小和位置并带有图片背景色的矩形。

如果您需要更多的澄清,请随时发表评论。好主意!

+0

这看起来非常有前途:)但是,通过他们阅读后,我不明白的是,我看到他们检测形状,但他们在我的图像中检测到*全部*形状。我怎么能限制它只是一种颜色的形状?因为我不确切知道我的图像会包含什么样的形状,也不知道我的搜索矩形的大小是多少,所以我无法对其进行编码。任何想法?有没有一点,甚至是一页,我错过了? –

+0

你说@Spiritfyre“现在,绘制的形状将是一个鲜明的,统一的彩色边框(例如青柠色),因为颜色不会出现在图片中,”如果颜色没有出现在图片中,你可以找出是否blob面积含有柠檬绿。例如,循环遍历blob中的像素,直到找到颜色(如果它全部是一种颜色,它应该只需要一个循环),并且如果找到它,则打破并将其作为要删除的blob。如果你想确定它是一种颜色,比循环直到你有10个相同颜色的像素。 – SuperPrograman

+0

太棒了,谢谢。我没有想到这一点。 :) –