• Emgu 学习之HelloWorld


    安装和配置

    系统Win10,VS2013,下载Emgu安装包libemgucv-windesktop-3.4.3.3016

    安装到了E:\OpenCV\emgucv-windesktop 3.4.3.3016

    打开官方的例子,试着运行HelloWorld,会在E:\OpenCV\emgucv-windesktop 3.4.3.3016\bin下面生成 X64 X86两个文件夹,里面是

    新建一个Console工程,添加引用,主要是上面目录下的这四个dll文件

    因为我们自己的第一个程序使用到了System.Drawing.Point,所以添加引用

     HelloWorld项目1

    using Emgu.CV;
    using Emgu.CV.CvEnum;
    using Emgu.CV.Structure;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CVHelloWorld
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                String win1 = "Test Window"; //The name of the window
                CvInvoke.NamedWindow(win1); //Create the window using the specific name
    
                Mat img = new Mat(200, 400, DepthType.Cv8U, 3); //Create a 3 channel image of 400x200
                img.SetTo(new Bgr(255, 0, 0).MCvScalar); // set it to Blue color
    
                //Draw "Hello, world." on the image using the specific font
                CvInvoke.PutText(
                   img,
                   "Hello, world",
                   new System.Drawing.Point(10, 80),
                   FontFace.HersheyComplex,
                   1.0,
                   new Bgr(0, 255, 0).MCvScalar);
    
    
                CvInvoke.Imshow(win1, img); //Show the image
                CvInvoke.WaitKey(0);  //Wait for the key pressing event
                CvInvoke.DestroyWindow(win1); //Destroy the window if key is pressed
            }
        }
    }

    然后根据平台,将X85或者X64文件夹复制到程序目录

    效果如下

    其他配置

    工具,选择项,浏览到Emgu.CV.UI.dll,可以添加控件

    还可以将E:\OpenCV\emgucv-windesktop 3.4.3.3016\bin添加到环境变量Path中去。

    HelloWorld 项目2

    代码

            static void Main(string[] args)
            {
                Mat img=CvInvoke.Imread("faces.png");
                CvInvoke.NamedWindow("读取图像", NamedWindowType.AutoSize);
                CvInvoke.Imshow("读取图像", img);
                CvInvoke.WaitKey(0);  //Wait for the key pressing event
                CvInvoke.DestroyWindow("读取图像"); //Destroy the window if key is pressed
            }

    显示图像

    将上面的图片高斯模糊

    代码

            static void Main(String[] args)
            {
                Mat image = CvInvoke.Imread("faces.png");
                CvInvoke.NamedWindow("TEST_IN", Emgu.CV.CvEnum.NamedWindowType.AutoSize);
                CvInvoke.NamedWindow("TEST_OUT", Emgu.CV.CvEnum.NamedWindowType.AutoSize);
                CvInvoke.Imshow("TEST_IN", image);
    
                Mat output=new Mat();
                CvInvoke.GaussianBlur(image, output, new Size(5, 5), 3, 3);
                //CvInvoke.GaussianBlur(output, output, new Size(5, 5), 3, 3);
                CvInvoke.Imshow("TEST_OUT", output);
                CvInvoke.WaitKey(0);
    
            }

    结果显示2个窗口,原图片和模糊的图片

    DownSampling

            static void Main(String[] args)
            {
                Mat image = CvInvoke.Imread("faces.png");
                CvInvoke.NamedWindow("TEST_IN", Emgu.CV.CvEnum.NamedWindowType.AutoSize);
                CvInvoke.NamedWindow("TEST_OUT", Emgu.CV.CvEnum.NamedWindowType.AutoSize);
                CvInvoke.Imshow("TEST_IN", image);
                Mat output=new Mat();
                CvInvoke.PyrDown(image, output);
                CvInvoke.Imshow("TEST_OUT", output);
                CvInvoke.WaitKey(0);
            }

    显示灰度图和Canny边缘检测

    static void Main(String[] args)
            {
                Mat image = CvInvoke.Imread("faces.png");
                CvInvoke.NamedWindow("TEST_GRAY", Emgu.CV.CvEnum.NamedWindowType.AutoSize);
                CvInvoke.NamedWindow("TEST_CANNY", Emgu.CV.CvEnum.NamedWindowType.AutoSize);
                CvInvoke.Imshow("TEST_IN", image);
                Mat imgGray=new Mat();
                Mat imgCny = new Mat();
                CvInvoke.CvtColor(image, imgGray, Emgu.CV.CvEnum.ColorConversion.Bgr2Gray);
                CvInvoke.Imshow("TEST_GRAY", imgGray);
    
                CvInvoke.Canny(imgGray, imgCny, 10, 100, 3, true);
                CvInvoke.Imshow("TEST_CANNY",imgCny);
                CvInvoke.WaitKey(0);
            }

  • 相关阅读:
    Oracle连接与会话
    数据库物理备份与恢复系列之——数据库手动热备份和恢复
    RHCS 6.5 由于resource-agents-3.9.2-40.el6版本过低导致rgmanager[61164]: [fs] umount failed
    ORA-20011 ORA-29913 and ORA-29400 with Associated KUP-XXXXX Errors from DBMS_STATS.GATHER_STATS_JOB(Doc ID 1274653.1)
    initrd image比lvm.conf文件舊導致RHCS切換服務unmount failed,reboot
    Oracle监听的静态注册和动态注册
    Linux下安裝Oracle database內核參數設置
    kkjcre1p: unable to spawn jobq slave process, slot 0, error 1089(Linux x86_64)补丁
    NHibernate系列
    Oracle设置主键自增长
  • 原文地址:https://www.cnblogs.com/noigel/p/10594906.html
Copyright © 2020-2023  润新知