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();
        }
    }
}

下载

源码下载

相关推荐
qianbo_insist1 分钟前
c++ python 共享内存
开发语言·c++·python
今天背单词了吗98015 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
CoderPractice22 分钟前
C#控制台小项目-飞行棋
开发语言·c#·小游戏·飞行棋
Coding小公仔29 分钟前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
程序猿阿伟31 分钟前
《声音的变形记:Web Audio API的实时特效法则》
开发语言·前端·php
ajassi20001 小时前
开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用
linux·开源·c#·mvc·.net
Humbunklung1 小时前
Rust方法语法:赋予结构体行为的力量
开发语言·后端·rust
萧曵 丶1 小时前
Rust 内存结构:深入解析
开发语言·后端·rust
算法练习生1 小时前
Qt核心类QWidget及其派生类详解
开发语言·c++·qt
1024小神2 小时前
tauri项目在windows上的c盘没有权限写入文件
c语言·开发语言·windows