在图片框中选择图像的多个区域,然后在相机的实时供稿中搜索这些区域

时间:2019-05-24 18:22:39

标签: c# image image-processing webcam emgucv

我要在Form1上管理一个具有2x pictureBox的应用程序。 第一个从摄像机获取实时供稿。 第二个允许用户打开图像,选择一个或多个区域(在用户要选择的区域周围制作一个矩形),然后将该矩形内的区域另存为一个或多个图像,以备后用。如果用户选择一个区域,则在其内部单击鼠标右键,将出现一个带有两个选项的菜单:“保存”和“取消”。 “保存”选项具有两个功能:1-将矩形(选定区域)保存在图像上; 2-将图像保存在矩形内。 “取消”选项将取消当前选择,并使选择矩形消失。

<---编辑!我得到了@Jimi ---> 的帮助 1)我让“选择矩形”工作,但不是我想要的。我可以围绕图像中的某些对象进行选择,但是当我右键单击它时,它就会消失。 我想要的是当我做出选择并在其中右键单击时,矩形应保留在那里,直到我从菜单中选择一个选项为止。如果我选择“保存”,则矩形将永久保留在图像上,并将所选内容另存为图像。如果我选择“取消”,则当前选择应消失。我已经尝试过在网上找到的内容以及在这里遇到的其他问题,但是没有任何结果... 现在如何: https://i.imgur.com/5U4CPzO.png 我希望它是: https://i.imgur.com/f3vuAu5.png https://i.imgur.com/aMUy8jq.png

<------>

2)我想知道如何“搜索”实时供稿照相机的图片框以获取某些图像。如果在相机图像中找到这些图像,我想在相机图片框中将它们周围做成一个矩形。 我在互联网上找到了一些东西(来自emgu cv的模板匹配),但这根本没有帮助。如果匹配,则无法使对象周围的矩形出现在相机图片框上。我在互联网上搜索了“实时模板匹配”,“相机模板匹配”和“模板匹配”,但没有找到对我的案例有用的东西。我必须使用emgucv的模板匹配算法(有点...每次都无法使用),但是我无法在相机图片框上显示结果。

到目前为止我所拥有的:

2)

Image<Bgr, byte> source = new Image<Bgr, byte>(new Bitmap(CAM_pb.Image)); // Image B
Image<Bgr, byte> template = new Image<Bgr, byte>(new Bitmap(IMAGE_pb.Image)); // Image A
imageToShow = source.Copy();

using (Image<Gray, float> result = source.MatchTemplate(template, TemplateMatchingType.CcoeffNormed))
{
   double[] minValues, maxValues;
   Point[] minLocations, maxLocations;
   result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations);

   //threshold 0.75 - 1.00 ~  on 1.00 images must be identical
   if (maxValues[0] > 0.85)
   {
       // match
       Rectangle match = new Rectangle(maxLocations[0], template.Size);
       imageToShow.Draw(match, new Bgr(Color.LightYellow), 3);
   }
}

   // Show imageToShow 
   pictureBox1.Image = imageToShow.Bitmap;

0 个答案:

没有答案