Tag: opencv

使用c#或c ++进行分水岭

我试图将Matlab函数watershed转换为C#或C ++。 我试图使用此代码,但CvFindContours使用此图像返回NULL 。 我也试过使用这个实现,但我遇到了FilterGrayToGray问题。 有谁知道我如何解决我的问题或如何计算我的图像上的分水岭? 有人能更准确地解释我的流域meyers泛滥算法吗?

从Image 到Image 的Emgu图像转换导致强度损失?

我们通过从原始图像中减去图像的拉普拉斯算子来执行图像类型的灰度图像的图像锐化。 结果,如果保存为JPEG,则具有良好定义的边缘和对比度。 但是,如果将结果图像转换为位图OR“ Image ”并保存为JPEG,则强度会降低并且锐化效果会丢失。 我怀疑转换为Bitmap可能会导致此问题。 因此,我保存了一些中间图像,并将图像转换为“ Image ”。 这没有用。 我还尝试使用一种简单的方法来缩放图像。 这也没有帮助。 当我们执行拉普拉斯并从原始图像中减去结果图像时,上述行为也是如此。 插图如下(为简单起见,代码已经过修改): … Image sharpenedImage = Sharpen(filter, originalprocessedImage); ProcessedImage = sharpenedImage.ToBitmap(); // Or ProcessedImage.Bitmap; ProcessedImage.Save(“ProcessedImage.jpg”); // results in intensity loss … public Image Sharpen(Image inputFrame) { ConvolutionKernelF Sharpen1Kernel = new ConvolutionKernelF (new float[,] { { -1,-1,-1 }, { -1, 8,-1 }, { -1,-1,-1 […]

如何使用opencv从字节显示video?

我正在开展一个项目,我们使用无线电调制解调器将数据(video和遥测)从无人驾驶飞行器传输到地面站。 我们需要做的是实时显示video,并能够知道哪个帧对应于C#中的每个遥测数据块。 数据被解封装为遥测和video的字节(mpeg4)。 由于我对OpenCV有一些经验,我想用它来解码,显示和抓取video中的点击位置。 为此,我使用名为Emgu的C#的OpenCV包装器。 问题是OpenCV从设备或文件加载video,我只有一些字节的回调。 我已经尝试将这些字节写入文件并使用OpenCV打开此文件,但是一旦它结束,我需要重新打开它并从它停止的地方继续,这会产生延迟。 任何人都知道如何做到这一点?

将C ++ dll导出到c#

‘using System; ‘using System.Collections.Generic; ‘using System.Drawing; ‘using System.Windows.Forms; ‘using Emgu.CV; ‘using Emgu.CV.Structure; ‘using Emgu.CV.CvEnum; ‘using System.IO; ‘using System.Diagnostics; ‘using System.Runtime.InteropServices; ‘namespace FaceStat ‘{ ‘class Form1 : Form { // public static extern void AsmSearchDll(out int nlmarks, out int lmarks, string imgname, byte imgdata, int width, int height, int is_color, string conf_file0, string conf_file1); [DllImport(@”../data/stasm_dll.dll”)] public […]

我应该如何使用velX,vely信息来获得当前帧和前一帧之间的X和Y位移?

我在C#中使用openCV库中的Lucas Kanade光流算法; 有两个系列的框架,我想在每两个框架中找出什么是光学流程并在pictureBox中显示它。 我可以从以下函数中获取velX和velY: Emgu.CV.OpticalFlow.LK(imGrayCurrent, imGrayNext, windSize, velX, velY); 现在,我应该如何使用这两个来显示两帧之间的流量? 或换句话说,我应该如何获得像素的位移? TNX

C#Emgu:使用DISOpticalFlow

今天是个好日子, 我正在尝试为video构建一个实时帧插值程序。 因为我一直使用C#,所以我选择使用OpenCV和Emgu 3.2.0(最新版本)。 所以,这是它: 首先,我有两个名为frame1和frame2的图像,显​​然是我video中的两帧。 接下来,我将构建我的DISOpticalFlow对象,如下所示 现在我必须用它来获得这两帧之间的平移向量。 所以我构建了一个名为flow的Gray Image,我使用了DISOpticalFlow的calc方法。 Aaaaand ……没什么。 无论我尝试什么,流量总是空的(参见此屏幕: http : //imgur.com/ozN0XgN ) 我错过了什么或做错了什么? 感谢大家阅读,祝你有个美好的一天! 代码: //My items Image frame1 = new Image(1280, 720); Image frame2 = new Image(1280, 720); DISOpticalFlow opticalFlowAlgorithm = new DISOpticalFlow(DISOpticalFlow.Preset.Medium); Image flow= new Image(1280, 720); //Get my frame from my server //Note : this is working […]

EmguCv TypeInitializationException由EmguCv.CV.CvInvoke引发

让我首先说我确实已经遵循了很多教程,例如整个位于EmguCv主站点上的教程,但是抛出了一个TypeInitializationException。 现在,仔细聆听,因为这里出现了非常奇怪的部分。 我首先要说的是我的问题有三个“级别”,然而,所有“级别”中的代码完全相同,即使没有任何变化。 这自然会指出我有一个引用或链接问题,但我再次尝试了不同的教程,但无济于事。 级别1(此级别产生TypeInitializationException) 我创建一个新项目,正确引用所有内容等,然后在这个新项目中编写我的代码。 在调试时,我抛出了exception,我的程序退出。 这是一个问题图片的链接: http : //prntscr.com/uychc 等级2(此等级完全正常,不会抛出任何exception) 在这个级别中,我几乎找到了EmguCv的一个示例项目(在本例中为VideoSurveilance),然后删除默认代码并将我的所有代码复制并粘贴到那里。 添加了我需要的更多参考文献后,程序运行正常。 我不能发布超过3个链接,但你必须相信我,video图片显示正确。 等级3(这个级别不会引发exception,但警告我一个人的“第一次机会”) 在这个级别中,我将整个Level 2项目复制并粘贴到另一个目录中。 找到并重新链接丢失的文件/引用后,我能够运行程序,但图片没有显示,我得到一个“类型的第一次机会exception”System.TypeInitializationException“发生在Emgu.CV.dll警告.http:/ /prntscr.com/uycmn 我目前运行Windows 7 x64(是的,我将构建选项更改为x64和x64 .dll)并运行EmguCv 2.4.9和2.4.2(在两者上测试)和Visual Studios 2010和2012(在两者上测试)。 这是它可能值得的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; //using System.Threading.Tasks; using System.Windows.Forms; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using […]

将Texture2D转换为OpenCV Mat?

在Unity中有一篇关于将OpenCV cv::Mat转换为Texture2D的post ,我提供了一个效果很好的答案。 现在,我正试图做相反的事情,但现在已经坚持了几个小时。 我想将Unity的Texture2D转换为OpenCV cv::Mat以便我可以在C ++端处理Texture。 这是我想要转换为cv:Mat Unity项目中的原始Texture2D : 这是将它转换为cv:Mat后的样子cv:Mat : 它看起来很褪色。 我并不担心图像的旋转 。 我可以解决这个问题。 只是想知道为什么它看起来如此褪色。 还使用cv::imwrite保存图像以用于测试目的,但问题也出现在保存的图像中。 C#代码 : [DllImport(“TextureConverter”)] private static extern float TextureToCVMat(IntPtr texData, int width, int height); unsafe void TextureToCVMat(Texture2D texData) { Color32[] texDataColor = texData.GetPixels32(); //Pin Memory fixed (Color32* p = texDataColor) { TextureToCVMat((IntPtr)p, texData.width, texData.height); } } public Texture2D […]

如何计算EMGU中两幅图像之间的相关性?

我有两个图像(让我们假设它们具有相同的大小),我想用EMGU和C#计算两个图像之间的相关性。 我没有找到任何function,并自己实现了相关计算..但我宁愿使用内置函数。 这样的function存在吗? 谢谢。

选择适当的IDE

在Windows下开发涉及识别手势和与操作系统交互的项目时,您会推荐以下哪种IDE /语言? 我将使用OpenCV库进行图像处理任务。 之后,我将使用win32 API或.NET框架与操作系统进行交互,具体取决于您建议的工具。 表现也是一个主要问题。 Visual C ++ 2008(使用C ++ / CLI) Visual C ++ 2008(使用本机C ++) visual C#2008(使用.NET框架) Qt的 开发C ++ 代码::块