Tag: opencv

一段时间后,IP Camera停止流式传输

我正在开发一个应用程序,我想使用IP camera显示video流,以及对IP Camera捕获的图像进行一些其他主要操作。 摄像头捕获中使用的库用于摄像头捕获: Emgu.CV库 下面是我在C#中使用的代码。 变量声明 private Capture capture; //takes images from camera as image frames private Emgu.CV.UI.ImageBox img; // Dynamic Picture Controls private int nCam; // no of cameras 处理图像的代码 private void ProcessFrame(object sender, EventArgs arg) { try { // Live Streaming Display Image ImageFrame = capture.QueryFrame(); // If Ip camera try to […]

如何将位图转换为图像

我正在使用OpenCV库进行图像处理。 我想将System.Drawing.Bitmap转换为Image 。 我怎样才能做到这一点?

使用OpenCV获取二进制图像中白色像素数的最快方法

使用OpenCV获取二进制图片中白色像素数的最快方法是什么? 有没有比使用两个for循环并逐像素地访问图像更快的东西?

将位图从c#传递到c ++

我有一个基于opencv用C ++编写的图像处理函数。 在我的wpf应用程序中,我使用AForge库来访问网络摄像头并在UI上更新它。 这是处理新帧的function。 void UI_NewFrame(object sender, NewFrameEventArgs eventArgs) { try { System.Drawing.Bitmap bitmapFrame = (Bitmap)eventArgs.Frame.Clone(); MemoryStream ms = new MemoryStream(); bitmapFrame.Save(ms, ImageFormat.Bmp); ms.Seek(0, SeekOrigin.Begin); BitmapImage bitmapImageFrame = new BitmapImage(); bitmapImageFrame.BeginInit(); bitmapImageFrame.StreamSource = ms; bitmapImageFrame.EndInit(); bitmapImageFrame.Freeze(); CurrentFrame = bitmapImageFrame; } catch (Exception ex) { Debug.WriteLine(“fatal::” + ex.Message); } } 这是我的c ++代码: void FaceTracker(unsigned char* imageBuffer, […]

访问违规例外之谜

我已经使用EMGU + OpenCV很长一段时间了,并遇到了这个AccessViolationException之谜。 首先,代码: class AVE_Simulation { public static int Width = 7500; public static int Height = 7500; public static Emgu.CV.Image[] Images; static void Main(string[] args) { int N = 50; int Threads = 5; Images = new Emgu.CV.Image[N]; Console.WriteLine(“Start”); ParallelOptions po = new ParallelOptions(); po.MaxDegreeOfParallelism = Threads; System.Threading.Tasks.Parallel.For(0, N, po, new Action((i) => […]

创建C ++ / CLI OpenCV包装器以在C#中使用

我想创建一个OpenCV包装器以在C#中使用它。 我使用此链接作为参考http://drthitirat.wordpress.com/2013/06/06/use-opencv-c-codes-in-a-vc-project-solution-of-creating-a-managed- clr-wrapper /到目前为止,我已经创建了一个包含我的图像处理代码的C ++控制台应用程序。 我还创建了一个C ++ / CLI类库,其中包含了OpenCV代码,但是当我尝试构建它时,我得到了许多关于C ++代码中使用的OpenCV函数的未解决的外部错误,我不知道如何解决它…知道如何解决这个问题吗? 在C#中使用C ++ OpenCV代码有一种更简单,更简单的方法吗? 我不想使用Emgu或任何其他包装器,我的图像处理代码必须使用C ++。

使用OpenCV检测来自一个图像的对象是否在另一个图像中

我有一个包含对象的示例图像,如下图中的耳环: View post on imgur.com 然后,我有一个大的候选图像集,我需要确定哪一个最有可能包含对象,例如: View post on imgur.com 所以我需要为每个图像生成一个分数,其中最高分对应于最可能包含目标对象的图像。 现在,在这种情况下,我有以下条件/约束来处理/周围: 1)我可以获得不同角度的多个样本图像。 2)样本图像可能与候选图像处于不同的分辨率,角度和距离。 3)有很多候选图像(> 10,000),所以它必须相当快。 4)我愿意为速度牺牲一些精度,所以如果这意味着我们必须搜索前100名而不是前10名,这很好,可以手动完成。 5)我可以手动操作样本图像,例如勾勒出我想要检测的对象; 候选图像不能手动操作,因为太多了。 6)我根本没有OpenCV或计算机视觉的真实背景,所以我从头开始。 我最初的想法是首先在样本图像中围绕对象绘制粗略轮廓。 然后,我可以识别候选图像中的对象和角落的角落。 我可以分析每个角落周围的像素,看看它们是否看起来相似,然后按每个角落的最大相似度得分的总和进行排名。 我也不确定如何量化类似的像素。 我想只是他们的RGB值的欧几里德距离? 问题在于它忽略了对象的中心。 在上面的例子中,如果耳环的角落都在金框附近,那么它就不会考虑耳环内的红色,绿色和蓝色gem。 我想我可以通过查看所有角对并通过沿着它们之间的线采样一些点来确定相似性来改进这一点。 所以我有几个问题: A)这种思路一般是否有意义,或者是否有一些我缺失的东西? B)我应该调查OpenCV的哪些特定算法? 我知道有多个角点检测算法,但我只需要一个,如果差异都在边缘上进行优化,那么我最好用。 C)使用算法的任何示例代码都有助于我的理解? 我的语言选择是Python或C#。

如何实现光流跟踪器?

我正在使用OpenCV包装器–Emgu CV,我正在尝试使用光流实现运动跟踪器,但我无法找到一种方法来组合从OF算法检索的水平和垂直信息: flowx = new Image(size); flowy = new Image(size); OpticalFlow.LK(currImg, prevImg, new Size(15, 15), flowx, flowy); 我的问题是不知道如何组合垂直和水平运动的信息,以建立移动物体的跟踪器? 一个新的形象? 顺便说一句,有一种简单的方法来显示当前帧的流信息? 提前致谢。

骰子面值识别

我正在尝试构建一个能识别两个6面骰子值的简单应用程序。 我正在寻找一些通用指针,甚至可能是一个开源项目。 两个骰子将分别为黑色和白色,分别为白色和黑色。 它们与相机的距离将始终相同,但它们在比赛场地上的位置和方向将是随机的。 骰子http://sofzh.miximages.com/c%23/www.freeimagehosting.net (不是最好的例子,表面将是更鲜明的颜色,阴影将消失) 我没有开发这种识别软件的经验,但我认为诀窍是首先通过搜索具有主导白色或黑色的方形轮廓来隔离脸部(图像的其余部分,即桌子/游戏)表面,将以明显不同的颜色),然后隔离点数计数。 自顶向下照明将消除阴影。 我希望所描述的场景如此简单(阅读:常见)它甚至可以用作开发OCR技术或类似计算机视觉挑战的开发人员的“介绍性练习”。 更新: 我做了一些进一步的谷歌搜索,并发现了这个video ,奇怪的是,这正是我正在寻找的。 看来OpenCV项目到目前为止是我最好的选择,我会尝试将它与其他项目,OpenCVDotNet或Emgu CV一起使用 。 更新: 仍在苦苦挣扎,无法让Emgu CV工作。 想法,指针,想法等仍然非常受欢迎!

检测卡车车轮

我目前正在开展一个项目,我们有一组卡车照相机。 我需要检测它是什么类型的卡车(它有多少个轮子)。 所以我正在使用EMGU试图检测到这一点。 我遇到的问题是我似乎无法使用EMGU的HoughCircle检测来检测车轮,它没有检测到所有车轮,也会检测到树叶中的随机圆圈。 所以我不知道接下来应该尝试什么,我尝试实现SURF算法来匹配它们之间的轮子,但这似乎不起作用,因为它们不完全相同,有没有办法我可以实现“松散” SURF算法? 这就是我的开始。 这是Hough Circle检测后得到的结果。 许多错误的检测,有些甚至没有接近圆形,并且由于某种原因后轮被检测为单个。 是否有可能确认检测到的圆圈实际上是使用SURF轮子并在它们之间进行匹配? 我对我接下来要做的事情有点迷茫,任何帮助都会非常感激。 (对不起英语不好) UPDATE 这就是我做的。 我使用blob跟踪能够在我的照片集中找到斑点。 有了这个我有效地可以找到移动卡车。 然后我将blob的矩形分成两部分并从那里取下半部分我知道我得到了应该包含轮子的区域,这大大增加了检测。 然后我会对我得到的轮子进行轻度强度松动检查。 由于它们通常更黑,我应该得到相当低的值,并且可以丢弃太白,180/255及以上的任何东西。 我也知道我的圆半径不能大于检测区的一半除以一半。