OpenCVSharp学习笔记(二)显示窗口和加载图片保存图片

2024-04-23 19:37:25 浏览数 (1)

显示窗口和加载图片

创建和显示窗口,因为比较简单我就直接上代码了

代码语言:javascript复制
//创建窗口
Cv2.NamedWindow("new", WindowFlags.Normal);
//加载图片
Mat img = Cv2.ImRead(@"E:/1.jpeg");
//展示窗口
Cv2.ImShow("new", img);
//等待输入时间
Cv2.WaitKey(0);
//销毁窗口资源
Cv2.DestroyAllWindows();
创建窗口
代码语言:javascript复制
Cv2.NamedWindow("new", WindowFlags.Normal);

第一个参数为窗口名称,第二个参数为窗口状态,窗口状态里面的内容很多,可以点进去看每种状态的作用,我这里只说两种常用的

代码语言:javascript复制
WindowFlags.Normal

该状态下用户可以调整窗口大小,随意拖动

代码语言:javascript复制
WindowFlags.AutoSize

该状态下用户不能调整窗口大小,受图片大小影响 我也把所有状态贴出来供大家参考

代码语言:javascript复制
    //
    // 摘要:
    //     Flags for cv::namedWindow
    [Flags]
    public enum WindowFlags
    {
        //
        // 摘要:
        //     the user can resize the window (no constraint) / also use to switch a fullscreen
        //     window to a normal size
        Normal = 0,
        //
        // 摘要:
        //     the ratio of the image is respected
        KeepRatio = 0,
        //
        // 摘要:
        //     status bar and tool bar
        GuiExpanded = 0,
        //
        // 摘要:
        //     the user cannot resize the window, the size is constrainted by the image displayed.
        AutoSize = 1,
        //
        // 摘要:
        //     change the window to fullscreen
        FullScreen = 1,
        //
        // 摘要:
        //     old fashious way
        GuiNormal = 16,
        //
        // 摘要:
        //     the image expends as much as it can (no ratio constraint)
        FreeRatio = 256,
        //
        // 摘要:
        //     window with opengl support
        OpenGL = 4096
    }
加载图片
代码语言:javascript复制
Mat img = Cv2.ImRead(@"E:/1.jpeg");

后面的参数为图片路径

展示窗口
代码语言:javascript复制
 Cv2.ImShow("new", img);

第一个参数为窗口名称,后面为Mat类,也就是前面加载的图片类 该方法如果第一个参数指定的窗口名称不存在,则会自动进行创建后显示。

修改窗口大小

如果我们需要修改窗口的大小,可以使用

代码语言:javascript复制
Cv2.ResizeWindow("new", 640,480);

第一个参数为窗口名称,后面为宽度和高度

Cv2.WaitKey(0);为设置窗口的等待时间,0为不限制时间,如果不添加该参数会发现窗口会闪退 Cv2.DestroyAllWindows();用于销毁窗口资源

运行结果

保存图片

保存图片的方法很简单这里我就不多做说明了

代码语言:javascript复制
      Mat img = Cv2.ImRead(@"E:/1.jpeg");
      Cv2.ImWrite(@"E:/1.png",img);

0 人点赞