检测图像中的圆圈
我目前正在使用EMGUCV在射击范围目标的图像上运行形状检测:但是无论我在代码中的设置如何(下图): double cannyThreshold = 180; double circleAccumulatorThreshold = 170; CircleF[] circles = CvInvoke.HoughCircles(uimage, HoughType.Gradient, 2.0, 1.0, cannyThreshold, circleAccumulatorThreshold, 5); 我似乎只能找到三个圆圈,其中一个是错误的. 我正在错误地讲这个吗?我正在使用默认示例用于 rev3.0 emgucv . 解决方案 首先找到边缘(例如,请参见Sobel Operator或Canny) 查找轮廓,之后轮廓将代表圆 按区域按过滤轮廓 使用MinencLosingCircle作为每个轮廓以获取中心,并且 半径.
12 2024-04-26
编程技术问答社区
右侧 用EmguCv进行人脸检测
大家好, 我在C#中使用EMGUCV进行面部检测和识别项目,因此我已经采取了一些步骤: - 检测前脸和左脸 - 认识面孔 但是问题当我想检测到脸的右侧时,它无效,因为分类器profile.xml只是为左侧工作,我找到了一些镜子的想法,但是我不知道该怎么做. 所以如果有人有任何想法,我会很高兴. 穆罕默德·哈萨尔(Mohammed Hassar). 解决方案 有一个flip()函数: html#flip
12 2024-04-26
编程技术问答社区
在OpenCV中使用SURF来匹配图像EmguCV
我正在从这里. > 似乎indices变量存储了匹配信息,但我不知道如何存储信息. 例如,您能告诉我找到了多少个匹配的积分吗?哪个点匹配了哪个点? 解决方案 在这条线上看看. Image result = Features2DToolbox.DrawMatches(modelImage, modelKeyPoints, observedImage, observedKeyPoints, indices, new Bgr(255, 255, 255), new Bgr(255, 255, 255), mask, Features2DToolbox.KeypointDrawType.DEFAULT); 最重要的变量是 mask .该变量都需要信息.它是数组.如果此数组上的值等于1,则意味着我们有一个共同的对.您必须计算在此数组中出现多少次. public int CountHowManyPairsExist( Ma
6 2024-04-26
编程技术问答社区
使用EmguCV进行骨架化
我正在尝试使用EMGUCV在C#中进行骨骼化.我正在此页面底部的示例中,该样本在C ++中,我尝试了一下,并且可以使用: 骨架/ 我将鳕鱼转换为c#如下: Image eroded = new Image(img2.Size); Image temp = new Image(img2.Size); Image skel = new Image(img2.Size); skel.SetValue(0); CvInvoke.cvThreshold(img2, img2, 127, 256, 0); StructuringElementEx element = new StructuringElementEx(3, 3, 1, 1, Emgu.C
12 2024-04-26
编程技术问答社区
将图像从BGR改为二进制图像0,1?
我想在我尝试将BGR更改为灰色 时,是否可以使用Emgu CV到Chnage图像从BGR到二进制图像 Image image_pass = new Image(bt1); 解决方案 是的,这是可能的. 也许尝试一下: Image image; image = image_pass.convert().ThresholdBinaryInv(new Gray(x), new Gray(255)); imageBox.Image(image); CvInvoke.cvShowImage("binary", image); //To show in a new Window 其中x是您的阈值,而255最大值. 如果 srcimage(x,y)>阈值或255,则将像素值转换为0,否则. 显然,您可以更改阈值和最大值
8 2024-04-26
编程技术问答社区
如何将Matrix<float>的数据类型修改为数组?
我正在使用C#使用Emgu CV(v2.4).在以下课程中.我需要将表中使用的列的数据类型修改为数组. public void FindSURF(Image modelImage) { VectorOfKeyPoint modelKeyPoints; SURFDetector surfCPU = new SURFDetector(500, false); //extract features from the object image modelKeyPoints = new VectorOfKeyPoint(); Matrix modelDescriptors = surfCPU.DetectAndCompute(modelImage, null, modelKeyPoints); } 冲浪功能提取物并存储在Matrix modelDescriptors中,我如何将此数据类
6 2024-04-26
编程技术问答社区
与cvextern.dll文件有关的错误(c#中的opencv)。
当我添加此文件(cvextern.dll)以引用或使用CMD命令CSC ..我得到此错误 致命错误CS0009:无法打开元数据文件" file_path" - '试图加载具有错误格式的程序. ' 为什么会发生这种情况?我该如何解决? 谢谢大家 解决方案 汉斯·帕斯特(Hans Passant)的评论是正确的.使用EMGU时,文件cvextern.dll应复制到您的输出文件夹中,该文件夹在该文件夹中运行或添加到项目中作为现有项目.然后选择"解决方案资源管理器"中的项目,然后将其属性更改为"复制到输出目录"的属性.请参阅 http://www.emgu.com/wiki/wiki/wiki/wiki/wiki/index.php/index.php/index.php/downloadload_and_and_installation_installationalation/a >有关正确使用文件的更多信息. 欢呼 克里斯
8 2024-04-26
编程技术问答社区
实施并在检测到运动时触发
如何使用EMGUCV实现简单的运动检测方法?我搜索了适用的示例,但是我发现的唯一解决方案太复杂了,无法实施. 有没有一种方法可以实现一种简单的方法来检测运动以触发我的应用程序? 解决方案 将单个框架转换为灰度. 将新帧从实时转换为灰度. 从实时开始的第一帧和新框架之间进行抽象. 结果是第三个新框架,由前两个之间的差异组成.使用侵蚀和阈值使其获得一个白色代表动态部分的框架,而黑色则代表其余空间. 这是一个代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
8 2024-04-26
编程技术问答社区
C#将位图转换为Emgu Mat总是失败
我正在尝试将一个位图转换为用于OPENCV的垫子. 但是由于某种原因,他们不允许我转换它. 我在堆栈上的下面找到了代码,并在许多其他网站上都看到了它. 这里有人知道为什么它不起作用? 无法将" system.drawing.bitmap"转换为"字节[,]. 注意,在开始时,将8个屏幕截图从设置的坐标中,将其保存为位图,然后应将其转换为垫子. 请看一下嵌入式图像. public static Image FromFile = new Image("MyImage.jpg"); Mat mat = FromFile.Mat; // Only a way to convert it succesfull, // but isnt the way i want to go. public static Bitmap skillQ;
28 2024-04-26
编程技术问答社区
EmguCV-从未经管理的数据中创建图像
我正在使用emgucv,并且我有一个字节类型的灰度矩阵,大小为640x480,矩阵的每个元素均为255或0.现在我需要从中制作图像.我发现的最好的构造函数看起来像这样: Image(int width, int height, int stride, IntPtr scan0) 我从矩阵中获得了第一个,第二和第四个参数,并为步幅发送了640个参数.但这给了我 Access violation exception: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 我感谢任何帮助. 解决方案 您很可能将某些错误作为指针.错误的大步只会导致图像内容出现扭曲.在您的情况下,640将是正确的值(再次使用宽度),因为大步始终表示内存中一个图像线的长度(在您的情况下为640字节).我可以猜测,但不
14 2024-04-26
编程技术问答社区
无法使用EMGU CV从RTSP流中连续抓取图像
我正在尝试使用C#Windows表单应用程序从IP摄像头从RTSP流中获取图像.我正在使用Emgu CV连续捕获流,但是RTSP蒸汽在几秒钟后停止,然后ImageGrabbedEvent永远不会发射. 我的目的很简单:从相机中获取所有帧并进行分析. 我正在使用HikVision IP摄像机(DS-2CD2683G1-IS),其中IP地址为192.168.1.64端口554上的流式RTSP(这是许多HikVision IP摄像机的默认IP地址和端口号) ) ) DateTime LastTimeImageGrabReinitialised = new DateTime(); public void InitializeCameraEMGUStream() { //added a datetime to the URL as recommended by another answer but it didnt help.
6 2024-04-26
编程技术问答社区
安装EMGU的问题
当前文档 在Visual Studio中创建一个新项目 要在Visual Studio中使用框架,您需要 下载并提取二进制文件软件包emgu.cv.windows.binary- {version} .zip 有关使用Visual Studio和C#下的依赖项的完整指南,请参见C#教程. 没有链接.我找不到emgu.cv.windows.binary- {version} .zip的下载位置.我在安装后的任何地方都找不到此文件. 安装说明是否错误?这些是在emgu nuget套件之一中找到的吗?如果是这样,哪一个? 另外,我与各种口味或C#OpENCV包装器以及所有各种安装指令感到困惑. 帮助获得OpenCV C#包装器运行将不胜感激. 解决方案 啊是... emgu.cv文档的喜悦. 请确保在下面包括两个 nuget软件包.后来包括所需的二进制文件:
6 2024-04-26
编程技术问答社区
如何在EMGUCV 3.1上对我的相机进行屏幕截图?
我在Emgu CV上执行非常简单的程序,因此我需要对相机录制的内容进行屏幕截图,并将其保存在特定的文件夹中,以下是我的相机捕获代码: ImageViewer viewer = new ImageViewer(); VideoCapture capture = new VideoCapture(); Application.Idle += new EventHandler(delegate (object sender, EventArgs e) { viewer.Image = capture.QueryFrame(); }); viewer.ShowDialog(); 我为简单的条款表示歉意,我仍然在编程中确实菜鸟. 解决方案 似乎您刚刚发布了EMGUCV Wiki的标准代码.但是,让我尝试解释如何在计算机上显示网络摄像头的视频供稿并在按下按钮时
12 2024-04-25
编程技术问答社区
opencv_imgproc.dll抛出BadImageFormatException
我正在使用EMGU CV(用于X64)构建图像处理应用程序,并且我想在图像上使用过滤功能.因此,我使用opencv_imgproc.dll,但它会抛出Solution Platform : x86 Operating System : Windows 7 - 64 Language: C# IDE: Visual C# 2010 express 解决方案 emgu 是OpenCV的托管包装器.因为OpenCV是不受管理的,因此您需要确保使用正确的Emgu版本进行编译. 根据评论中发布的例外( http://pastie.org/5170481 =" http://pastie.org/5170499" rel =" nofollow"> http://pastie.org/5170499 供参考),emgu版本是x86,这意味着OPENCV DLL依赖于32位需要编译.为了使您的代码运行,无论您运行的操作系统的位置如何 要使用64位版本的Emgu,您需要下载为64位编译的
16 2024-04-25
编程技术问答社区
EmguCV ImageGrabbed Event WPF App
我在以下代码上有问题 namespace MyApp { public partial class PhotoWindow : Window { private Capture _capture; public PhotoWindow () { InitializeComponent(); _capture = new Capture(); if (_capture != null) { // in XAML CaptureSource.Width = 150; CaptureSource.Height = 180; _capture.ImageGrabbed +
12 2024-04-25
编程技术问答社区
使用EMGU 3.0,MorphologyEx,C#开放和关闭的图像处理,C#
如何使用新Emgu版本打开和关闭? 如何实现图像处理? 我找到了这个: www.stackoverflow.com/questions/11567350/opening-and-closing-using-opencv/ ,但是我不能再使用" structuringElementex"和新的" image.morphologyex()"方法需要更多的值. 我还尝试了.dilate和.erode,但这只有3x3矩形形状才有可能. 一个"更新"示例很棒! 解决方案 在使用emgu cv 3.0 的形态学时也有同样的问题 我在 [Test] public void TestMorphEx() { Mat kernel1 = CvInvoke.GetStructuringElement(Emgu.CV.CvEnum.ElementShape.Cross, new Size(3, 3), new Point(1, 1)); Matr
26 2024-04-25
编程技术问答社区
艾古C# OpenCV:让黑色透明的颜色
我目前正在尝试使用OpenCV实现一个函数,该功能使图像透明的颜色黑色.我使用了此 thread 作为指南. 目前它不起作用,我不确定是因为我转移到C#还是另一个错误. public Image BlackTransparent(Image image) { Mat imageMat = image.Mat; Mat finalMat = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 4); Mat tmp = new Mat(imageMat.Rows, imageMat.Cols, Emgu.CV.CvEnum.DepthType.Cv8U, 1); Mat alpha = new Mat(imageMat.Rows, imageMa
24 2024-04-25
编程技术问答社区
如何使用OpenCv 3.0 CvInvoke.HoughLines方法和EmguCv
如何用c#中的emgucv调用cvinvoke.houghlines?因此不是houghlinesp方法.我遇到的麻烦是用于第二个参数的类型,即iOutputarray. 解决方案 LineSegment2D[] lines; using (var vector = new VectorOfPointF()) { CvInvoke.HoughLines(cannyEdges, vector, _arguments.HoughLineArgs.DistanceResolution, Math.PI / _arguments.HoughLineArgs.AngleResolution, _arguments.HoughLineArgs.Threshold); var linesList = n
10 2024-04-25
编程技术问答社区
使用emgu.cv的阿尔法合成图像
emgu.cv(nuget package 2.4.2)据我所知,在OpenCV中可用的GPU :: AlphAcomp方法. 因此,当试图实施这种特定类型的复合材料时,C#的慢速速度令人难以置信,因此它占用了我的应用程序总CPU的80%. 这是我最初的解决方案,非常出色. static public Image Overlay( Image image1, Image image2 ) { Image result = image1.Copy(); Image src = image2; Image dst = image1; int rows = result.Rows; int cols = result.Cols;
18 2024-04-25
编程技术问答社区
如何从C#中调用OpenCV'的MatchTemplate方法
我正在尝试使用 opencvSharp 库中的图书馆 nuget .这是我写的代码: var image = Cv.LoadImage("Image.png"); var template = Cv.LoadImage("Template.png"); var w = (image.Width - template.Width) + 1; var h = (image.Height - template.Height) + 1; IplImage result = new IplImage(w, h, BitDepth.F32, 1); Console.WriteLine("Image: {0} {1}", image.GetSize(), image.ElemType); Console.WriteLine("Template: {0} {1}", template.GetSize(), template.ElemType); Console.WriteLine("Result
34 2024-04-25
编程技术问答社区