C# OpenCvSharp Demo - Mat格式化输出、Mat序列化和反序列化

C# OpenCvSharp Demo - Mat格式化输出、Mat序列化和反序列化

目录

效果

项目

代码

下载


效果

复制代码
直接输出:

Mat [ 3*2*CV_8UC3, IsContinuous=True, IsSubmatrix=False, Ptr=0x1eb73ef9140, Data=0x1eb73ef91c0 ]


格式化输出:默认风格

[ 91,   2,  79, 179,  52, 205;
 236,   8, 181, 239,  26, 248;
 207, 218,  45, 183, 158, 101]


格式化输出:Python风格

[[[ 91,   2,  79], [179,  52, 205]],
 [[236,   8, 181], [239,  26, 248]],
 [[207, 218,  45], [183, 158, 101]]]


格式化输出:CSV风格

 91,   2,  79, 179,  52, 205
236,   8, 181, 239,  26, 248
207, 218,  45, 183, 158, 101


格式化输出:NumPy风格

array([[[ 91,   2,  79], [179,  52, 205]],
       [[236,   8, 181], [239,  26, 248]],
       [[207, 218,  45], [183, 158, 101]]], dtype='uint8')


格式化输出:c风格

{ 91,   2,  79, 179,  52, 205,
 236,   8, 181, 239,  26, 248,
 207, 218,  45, 183, 158, 101}


格式化输出一行:Python风格

[[[236,   8, 181], [239,  26, 248]]]


格式化输出一列:Python风格

[[179,  52, 205],
 [239,  26, 248],
 [183, 158, 101]]


格式化输出ROI 矩形:Python风格

[[[ 91,   2,  79], [179,  52, 205]],
 [[236,   8, 181], [239,  26, 248]]]


格式化输出ROI Range:Python风格

[[[ 91,   2,  79], [179,  52, 205]],
 [[236,   8, 181], [239,  26, 248]]]

项目

代码

using OpenCvSharp;

using System;

using System.Drawing;

using System.IO;

using System.Text;

using System.Windows.Forms;

namespace OpenCvSharp_Demo

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

Mat image;

StringBuilder sb = new StringBuilder();

private void Form1_Load(object sender, EventArgs e)

{

image = new Mat(3, 2, MatType.CV_8UC3);

Cv2.Randu(image, Scalar.All(0d), Scalar.All(255d));

pictureBox1.Image = new Bitmap(image.ToMemoryStream());

}

//序列化

private void button2_Click(object sender, EventArgs e)

{

textBox1.Text = "序列化";

FileStorage fileStorage = new FileStorage("file.txt", FileStorage.Modes.Write);

fileStorage.Write("src", image);

fileStorage.Release();

//读取显示

textBox1.Text = File.ReadAllText("file.txt");

}

//反序列化

private void button4_Click(object sender, EventArgs e)

{

textBox1.Text = "反序列化";

FileStorage fileStorage = new FileStorage("file.txt", FileStorage.Modes.Read);

Mat loadImage = fileStorage"src".ToMat();

pictureBox2.Image = new Bitmap(loadImage.ToMemoryStream());

fileStorage.Release();

}

//格式化输出

private void button5_Click(object sender, EventArgs e)

{

sb.Clear();

sb.AppendLine("直接输出:");

sb.AppendLine(image.ToString());

sb.AppendLine("");

sb.AppendLine("格式化输出:默认风格");

sb.AppendLine(Cv2.Format(image));

sb.AppendLine("");

sb.AppendLine("格式化输出:Python风格");

sb.AppendLine(Cv2.Format(image, FormatType.Python));

sb.AppendLine("");

sb.AppendLine("格式化输出:CSV风格");

sb.AppendLine(Cv2.Format(image, FormatType.CSV));

sb.AppendLine("");

sb.AppendLine("格式化输出:NumPy风格");

sb.AppendLine(Cv2.Format(image, FormatType.NumPy));

sb.AppendLine("");

sb.AppendLine("格式化输出:c风格");

sb.AppendLine(Cv2.Format(image, FormatType.C));

sb.AppendLine("");

sb.AppendLine("格式化输出一行:Python风格");

sb.AppendLine(Cv2.Format(image.Row(1), FormatType.Python));

sb.AppendLine("");

sb.AppendLine("格式化输出一列:Python风格");

sb.AppendLine(Cv2.Format(image.Col(1), FormatType.Python));

sb.AppendLine("");

sb.AppendLine("格式化输出ROI 矩形:Python风格");

sb.AppendLine(Cv2.Format(new Mat(image, new Rect(0, 0, 2, 2)), FormatType.Python));

sb.AppendLine("");

sb.AppendLine("格式化输出ROI Range:Python风格");

sb.AppendLine(Cv2.Format(new Mat(image, new OpenCvSharp.Range(0, 2), new OpenCvSharp.Range(0, 2)), FormatType.Python));

sb.AppendLine("");

sb.Replace("\n", "\r\n");

textBox1.Text = sb.ToString();

}

}

}

复制代码
using OpenCvSharp;
using System;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace OpenCvSharp_Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Mat image;
        StringBuilder sb = new StringBuilder();

        private void Form1_Load(object sender, EventArgs e)
        {
            image = new Mat(3, 2, MatType.CV_8UC3);
            Cv2.Randu(image, Scalar.All(0d), Scalar.All(255d));

            pictureBox1.Image = new Bitmap(image.ToMemoryStream());
        }

        //序列化
        private void button2_Click(object sender, EventArgs e)
        {
            textBox1.Text = "序列化";
            FileStorage fileStorage = new FileStorage("file.txt", FileStorage.Modes.Write);
            fileStorage.Write("src", image);
            fileStorage.Release();

            //读取显示
            textBox1.Text = File.ReadAllText("file.txt");
        }

        //反序列化
        private void button4_Click(object sender, EventArgs e)
        {
            textBox1.Text = "反序列化";
            FileStorage fileStorage = new FileStorage("file.txt", FileStorage.Modes.Read);
            Mat loadImage = fileStorage["src"].ToMat();
            pictureBox2.Image = new Bitmap(loadImage.ToMemoryStream());
            fileStorage.Release();
        }

        //格式化输出
        private void button5_Click(object sender, EventArgs e)
        {
            sb.Clear();

            sb.AppendLine("直接输出:");
            sb.AppendLine(image.ToString());
            sb.AppendLine("");

            sb.AppendLine("格式化输出:默认风格");
            sb.AppendLine(Cv2.Format(image));
            sb.AppendLine("");

            sb.AppendLine("格式化输出:Python风格");
            sb.AppendLine(Cv2.Format(image, FormatType.Python));
            sb.AppendLine("");

            sb.AppendLine("格式化输出:CSV风格");
            sb.AppendLine(Cv2.Format(image, FormatType.CSV));
            sb.AppendLine("");

            sb.AppendLine("格式化输出:NumPy风格");
            sb.AppendLine(Cv2.Format(image, FormatType.NumPy));
            sb.AppendLine("");

            sb.AppendLine("格式化输出:c风格");
            sb.AppendLine(Cv2.Format(image, FormatType.C));
            sb.AppendLine("");

            sb.AppendLine("格式化输出一行:Python风格");
            sb.AppendLine(Cv2.Format(image.Row(1), FormatType.Python));
            sb.AppendLine("");

            sb.AppendLine("格式化输出一列:Python风格");
            sb.AppendLine(Cv2.Format(image.Col(1), FormatType.Python));
            sb.AppendLine("");

            sb.AppendLine("格式化输出ROI 矩形:Python风格");
            sb.AppendLine(Cv2.Format(new Mat(image, new Rect(0, 0, 2, 2)), FormatType.Python));
            sb.AppendLine("");

            sb.AppendLine("格式化输出ROI Range:Python风格");
            sb.AppendLine(Cv2.Format(new Mat(image, new OpenCvSharp.Range(0, 2), new OpenCvSharp.Range(0, 2)), FormatType.Python));
            sb.AppendLine("");

            sb.Replace("\n", "\r\n");

            textBox1.Text = sb.ToString();
        }
    }
}

下载

源码下载

相关推荐
AI的探索之旅6 小时前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
小羊没烦恼!6 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
神仙别闹7 小时前
基于C#+MySQL实现(WinForm)个人聊天室软件
c#
伞伞悦读8 小时前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车8 小时前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁9 小时前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
kybs19919 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
词却9 小时前
OpenCV学习:CNN 人脸检测
opencv
孙启超10 小时前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int10 小时前
深入理解C++系列(20)——C++11(下)
开发语言·c++