我必须创建一个宏,它应该按颜色在屏幕图片的特定区域上检测对象。此外,如果已检测到对象,则需要继续执行代码。
Image<Bgr, Byte> imgWindowScreen;
Image<Gray, Byte> imgWindowScreenProcessed;
Bitmap bmpScreenshot;
System.Drawing.Graphics gfxScreenshot;
Size size = new Size(400, 120);
bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(700, 347, 0, 0, size);
imgWindowScreen = new Image<Bgr, Byte>(bmpScreenshot);
imgWindowScreenProcessed = imgWindowScreen.InRange(new Bgr(3, 25, 82),
new Bgr(50, 98, 200));
如何定义imgWindowScreenProcessed具有搜索颜色的像素?我需要建立以下结构:
if (picture has pixels of searched color) {...}
else {...}
答案 0 :(得分:1)
Here,您可能会发现HSV阈值化的Python实现。我了解您需要使用另一种语言,但是由于它显示了一个简单的案例,因此您可能会对实现的逻辑有所了解。 Here,您可以找到更深入的C ++实现
获得所需颜色像素为1且其他像素为0的二进制图像后,您可以玩形态学来增强图像here,并获得适当的关注区域。
然后,当您有一个在图像中时,您可能希望查看对象的位置。您可以使用findContours()函数来获取对象的位置。
我通常在Python中使用OpenCV,但希望这也可能有所帮助! :)