检测图像中的圆圈
我目前正在使用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作为每个轮廓以获取中心,并且 半径.
6 2024-04-26
编程技术问答社区
如何将管理的Bitmap从C#传递到包装好的非管理的OpenCV的Mat上?
我有一个带有3个部分的项目: 带有回调的托管C#项目,这给了我一个位图(它应该具有PixelFormat = format24bpprgb).我已经尝试了几种方法将位图转换为我可以传递给第2部分的东西,这是我尝试的最后一件事: public int BufferCB(IntPtr pBuffer, int BufferLen) { byte[] aux = new byte[BufferLen]; Marshal.Copy(pBuffer, aux, 0, BufferLen); String s_aux = System.Text.Encoding.Default.GetString(aux); wrappedClassInstance.GetBitmap(s_aux); } 托管的C ++/CLI要包装项目3: int WrappedClass::GetBitmap(array^ s_in) {
14 2024-04-26
编程技术问答社区
右侧 用EmguCv进行人脸检测
大家好, 我在C#中使用EMGUCV进行面部检测和识别项目,因此我已经采取了一些步骤: - 检测前脸和左脸 - 认识面孔 但是问题当我想检测到脸的右侧时,它无效,因为分类器profile.xml只是为左侧工作,我找到了一些镜子的想法,但是我不知道该怎么做. 所以如果有人有任何想法,我会很高兴. 穆罕默德·哈萨尔(Mohammed Hassar). 解决方案 有一个flip()函数: html#flip
8 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
4 2024-04-26
编程技术问答社区
使用套接字连接将图像从java传输到c#的问题
我在我的PC(客户端)上的Raspberry Pi和c#程序上有一个java程序(服务器).我想将图像从覆盆子上的摄像头连续传输到我的c#程序.我找到了如何通过套接字连接连接java和c#的代码.我的Java代码: public static void Start() { new Thread(() -> { while (true) { try { System.out.println("waiting for connection"); Socket socket = server.accept(); InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(
14 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
10 2024-04-26
编程技术问答社区
在Windows 7 x32下使用c#中的dllimport的问题
iam在C#中导入DLL问题.我在Windows XP X32下创建了库,并尝试在Windows 7 X32上使用它.我的图书馆使用了另一个名为opnecvsharp的库,该库将dllimport用于C ++的OpenCV库. iam确保我将OpenCv.dlls添加到与可执行文件的同一文件夹中.我试图以管理员的身份运行EXE,禁用UAC,在路径变量中添加路径,但是这些都没有帮助我. 我如何使我的程序看到DLL? 图片中的错误显示程序没有看到OpenCV DLL库. OpenCvSharp仅提供DLL,而没有socuce文件,因此我不能在这里粘贴代码如何导入. 解决方案 尽管错误消息报告opencv_core220库缺失,但您坚持认为它与可执行文件中的目录相同.因此,OpenCV依赖性之一似乎是失败的. 最有可能和合理的原因是目标机器上尚未安装视觉C ++重新分布软件包.
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 >有关正确使用文件的更多信息. 欢呼 克里斯
6 2024-04-26
编程技术问答社区
OPENCV-没有在捕获循环中没有等待网的情况下显示的图像
在 opencv 中,如果我在显示循环中不包含Cv2.WaitKey(1)行以用于捕获的图像,则在屏幕上没有图像. 在C ++,Phyton或C#. 上也是如此 这是什么原因,还有其他选择吗? 此示例在C#( opencvSharp )中: VideoCapture cap = new VideoCapture(); Window w = new Window(); cap.Open("animation.avi"); while (cap.Read(src)) { Cv2.WaitKey(1); w.ShowImage(src); } 解决方案 技术上highgui需要调用waitkey()才能有时间更新窗口. 来自 opencv 文档,参考imshow()函数(ShowImage in C#): 应之后的waitkey函数显示该功能 指定毫秒的图像.否则,它不会显示 图像.例如,Waitkey(0)将无限显示窗口 直到任
16 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;
18 2024-04-26
编程技术问答社区
更新纹理2D(Unity)与OpenCV videocapture(C ++)并使用Sprite Renderer显示混淆的输出
backgroud: similiar发行在这里我使用答案中的代码段.但是,在我的情况下,它没有解决该问题.我必须补充说我是Unity编程的初学者! 目标:通过OPENCV C ++脚本接收视频直播,并从Unity脚本访问以在场景中显示. 在Scence中显示直播的方法: Sprite渲染器. 问题:查看下面的屏幕截图,网络摄像头输出彼此相邻显示四次,并带有条纹(它将显示我在相机前面). IMShow显示正确的网络摄像头映像. 当前代码: c ++: ... extern "C" void __declspec(dllexport) Init() { _capture.open(0); } extern "C" void __declspec(dllexport) NDVIStreamer(unsigned char* data, int width, int height) { Mat _currentFrame(height,
14 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的标准代码.但是,让我尝试解释如何在计算机上显示网络摄像头的视频供稿并在按下按钮时
8 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位编译的
10 2024-04-25
编程技术问答社区
如何通过使用C++/cli从C#流到OpenCV Mat?
我正在阅读Azure Blob存储中的一些图像.这是C#. 中的流 在C ++/CLI中,我需要这样做: cv::Mat img_object = imdecode(data, IMREAD_UNCHANGED); 其中的数据是类型CV :: InputArray 所以问题是我如何最好地从C#到CV :: MAT? public ref class Client { public: // TODO: Add your methods for this class here. void Method(Stream ^ img1, Stream ^ img2); }; void Client::Method(...){ } 我只是放入流 ^ img1,流 ^ img2,这不是必需的,只是不确定什么是从C#流到CV :: Mat class的最佳方法. 我知道我可以在临时文件位置保存流并改用IMREAD,但是只能在内存中进行. 在c
8 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
20 2024-04-25
编程技术问答社区
OpenCV中的cvConvertScale调用solvePnP时出现异常
我正在尝试使用OpenCV(通过OpenCvSharp)使用SolvePNP,但我得到了一个我不了解的例外. An unhandled exception of type 'OpenCvSharp.OpenCVException' occurred in OpenCvSharp.dll Additional information: src.size == dst.size && src.channels() == dst.channels() 搜索后,我发现它来自convert.cpp 的cvconvertscale 这是我的使用方式: var objectPoints = new OpenCvSharp.CPlusPlus.Point3f[4] { o1, o2, o3, o4 }; var imagePoints = new OpenCvSharp.CPlusPlus.Point2f[4] { i1, i2, i3, i4 }; var intrinsic =
4 2024-04-25
编程技术问答社区
" opencvexception:scn == 3 || scn == 4"当我将图像转换为灰色时
当我尝试加载图像并将其转换为灰色时,我会得到此错误: opencvexception:scn == 3 || scn == 4 当我尝试将image1转换为灰色并将其保存在proccessImageOne的行中时,它会出现: Cv2.CvtColor(image1, processImageOne, ColorConversionCodes.BGR2GRAY); 我已经检查了图像是否为空,并且是否真的存在于文件夹中. 这是我的代码: imageName = "/images/test/img4.png"; var image = File.ReadAllBytes(Application.dataPath + imageName); Debug.Log("Type = " + image.GetValue(0)); if (image == null) { Debug.Log("could not load image !"); } Tex
8 2024-04-25
编程技术问答社区
将opencv图像cv::Mat格式转换为C# BitmapImage
我写了此示例代码来解释我的问题.我在VS 2013中有一个解决方案,其中包含一个C#项目和一个C ++项目.我尝试在C ++(x86)中使用OpenCV读取图像.并希望将C#x86项目(使用的CLR模式)传递到位图对象,然后将bitmapimage对象用作WPF ImageSource. 我的C ++代码: Bitmap^ SomeClass::Test(System::String^ imgFileName) { auto fileName = msclr::interop::marshal_as(imgFileName); Mat img = imread(fileName); //Do something auto bmp = gcnew Bitmap(img.cols, img.rows, img.step, Imaging::PixelFormat::Format24bppRgb, (IntPtr)img.data);
6 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
16 2024-04-25
编程技术问答社区