Tag: opencv

人脸检测和比较

我正在为我的文章进行面部检测和比较的小型研究。 目前,我正在使用基于类似基于OpenCV级联的function的快速人脸检测(我稍后将实施学习)。 下一步是进行面部比较。 有没有熟知的算法? 它会很棒,如果有一些C#代码,解释它们或一些实现它们的dll。

在C#中调整图像大小并将其发送到OpenCV会导致图像失真

这是与此相关的后续问题。 基本上,我有一个使用OpenCV进行图像处理的DLL。 有两种方法,一种接受image-Path ,另一种接受cv::Mat 。 使用image-path工作正常。 接受image那个是有问题的。 这是接受文件名(DLL)的方法: CDLL2_API void Classify(const char * img_path, char* out_result, int* length_of_out_result, int N) { auto classifier = reinterpret_cast(GetHandle()); cv::Mat img = cv::imread(img_path); cv::imshow(“img recieved from c#”, img); std::vector result = classifier->Classify(std::string(img_path), N); std::string str_info = “”; //… *length_of_out_result = ss.str().length(); } 这是接受图像(DLL)的方法: CDLL2_API void Classify_Image(unsigned char* img_pointer, unsigned […]

EmguCV仅在x86发布模式下出现内存不足 – 锐化图像

我试图使用EmguCV增加图像的清晰度 Image myImage = new Image(new Bitmap(pictureBox1.Image)); float[,] matrixKernel = new float[3, 3] { { 0,-1, 0 }, {-1, 5,-1 }, { 0,-1, 0 } }; ConvolutionKernelF matrix = new ConvolutionKernelF(matrixKernel); Image result = myImage.Convolution(matrix); Image BGRResult = result.ConvertScale(1, 0); e.Result = BGRResult.ToBitmap(); myImage.Dispose(); result.Dispose(); BGRResult.Dispose(); 该代码适用于中等分辨率图像,但在使用高分辨率图像时,例如:6000X4000抛出以下exception 请注意,当项目设置为AnyCPU时,即使对于高分辨率图像,锐化也能正常工作 – >调试模式我正在使用EmguCV 3.3 更新 : 根据Rick的参考答案,我做了以下修改,但问题仍然存在。请咨询。 float[,] […]

捕获video时出现X264错误消息

我正在编写一个程序,将一些网络摄像头video保存到文件中。 我正在使用x264中的x264编解码器 当我尝试将帧写入文件时,我会弹出此错误消息。 x264vfw [警告]:很少有帧丢失。 解决这个问题的方法: x264vfw [警告]: – 如果您使用VirtualDub或其fork,则可以启用“VirtualDub Hack”选项 x264vfw [警告]: – 您可以启用“文件”输出模式 x264vfw [警告]: – 您可以启用“零延迟”选项 我找到了这个VirtualDub Hack,但后来我没有使用虚拟配音。 我不确定文件输出模式和零延迟是什么意思。 我认为问题与编解码器有关,因为当我改用使用不同的编解码器时,一切正常。 我正在使用C#和emgu,但我不认为这就是问题所在。 编辑 如果代码有帮助 public static void StartCapture() { try { capture = new Capture(); capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH, 1920); //1920 capture.SetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT, 1080); //1080 CaptureOutput = new VideoWriter ( “capture output.avi”, CvInvoke.CV_FOURCC(‘X’,’2′,’6′,’4′), 50, //fps (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_WIDTH), (int)capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_HEIGHT), […]

没有找到asp.net的OpenCV非托管DLL

我们正在构建一个Web应用程序(C#.NET),它使用Emgu opencv包装器forms的非托管库。 我们正在强制构建为32位(x86),我们正在使用32位版本的Emgu。 所有这些在本地构建上都很好用,但是当发布到我们的web服务器时,openCV Dll(s)无法加载: System.DllNotFoundException Unable to load DLL ‘opencv_core240’: The specified module could not be found. (Exception from HRESULT: 0x8007007E) System.TypeInitializationException: The type initializer for ‘Emgu.CV.CvInvoke’ threw an exception. —> System.DllNotFoundException: Unable to load DLL ‘opencv_core240’: The specified module could not be found. (Exception from HRESULT: 0x8007007E) at Emgu.CV.CvInvoke.cvRedirectError(CvErrorCallback errorHandler, IntPtr userdata, IntPtr […]

从_capture.QueryFrame()中删除背景

我正在使用Emgucv,我想知道是否可以从_capture.QueryFrame中删除背景,并能够专注于我相机上最近的对象? 提前致谢。

骨架化OpenCV在C#中

任何人都可以给我一个如何在不使用距离变换的情况下进行骨骼化的示例,或者如果你有一个具有距离运行变换的骨架化。 我在C#中有一个OpenCV示例,更多不起作用。 cvlib.CvDistTransform(pimg ref,ref timg,(int)cvlib.CV_DIST_L2,3,null,null); null的参数出错,我无法解决。 如果有人知道如何解决,或者其他一些例子请告诉我。 我在C#中使用OpenCV,但是如果示例是在C ++中使用OpenCV或其他liguam服务。 谢谢

emguCV 3.1 – 人脸检测

我是C#中OpenCV / EmguCV的新手。 我尝试了一个教程( http://fewtutorials.bravesites.com/entries/emgu-cv-c/level-3—live-face-detection ),并且使用网络摄像头捕获video非常简单。 现在我的问题:本教程是为EmguCV 2.x编写的。 我正在使用EmguCV 3.1(我喜欢使用最新的)。 因此我使用Mat类而不是Image类。 Image类没有使用capture.QueryFrame(); 但是当我开始面对检测时,教程说我应该使用CascadeClassifier和DetectHaarCascade类。 接受DetectHaarCascade但不知道DetectHaarCascade 。 在我的5小时!! 搜索我刚刚发现,DetectHaarCascade已经过时,但没有找到任何替代它的方法,而且还不知道HaarCascade.Detect() 。 我有以下成员: using Emgu.CV; using Emgu.CV.Structure; using Emgu.Util; using Emgu.CV.CvEnum; 那么,请帮助我:DetectHaarCascade的替代品是什么,我该如何使用它? 有没有EmguCV 3.1的教程? 谢谢!!

OpenCV从字节数组创建Mat

在我的C ++ DLL中,我从字节数组创建Mat: BYTE * ptrImageData; //Image data is in this array passed to this function Mat newImg = Mat(nImageHeight, nImageWidth, CV_8UC3, ptrImageData); 使用一些灰色阴影而不是原始阴影创建图像。 这是从字节数组创建Mat的正确方法吗? 请参阅代码 ptrImageData从C#代码传递给C ++ DLL。 C#代码传递图像数据 System.Drawing.Image srcImage //Has the image MemoryStream ms = new MemoryStream(); Marshal.FreeHGlobal(ptrImageData); srcImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] imgArray = ms.ToArray(); ms.Dispose(); int size1 = Marshal.SizeOf(imgArray[0]) * imgArray.Length; IntPtr […]

通过OpenCV的camshift算法控制鼠标指针(或鼠标基本上如何工作)

我使用EmguCV(openCV的包装器)在C#中编写了一个程序。 程序使用camshift算法跟踪对象。 在对象周围绘制一个矩形。 光标移动到矩形的中心。 输入来自网络摄像头。 最初的问题是光标无法覆盖整个屏幕。 它的移动仅限于框架尺寸。 所以我应用了一个乘法因子: 在X方向上移动的screenwidth / framewidth。 屏幕高度/框架高度在Y方向上移动 有了它,鼠标覆盖整个区域。 但鼠标移动不再平滑。 我无法指出两个紧密相连的图标。 如何在覆盖整个屏幕时使鼠标移动平滑,就像真正的鼠标一样?