原创 模拟点阵屏做实时剪影系统-1 将二进制信息转为图像

2019-4-4 15:39 1727 15 5 分类: MCU/ 嵌入式 文集: 点阵剪影
将二进制信息转为图像,我们可以约定0用蓝色圆点画、1用红色圆点画,除此之外我们还需要知道圆点的直径、左右间距、上下间距,这些信息都可以放在一个txt文件里,直接使用文本的格式来保存信息。这里我们约定文本文件第一行是圆点直径,第二行是圆点上下间距,第三行是圆点左右间距,从第四行开始是标识0和1。
所以我们随便写一个“TestFile.txt”的文本文件,它表明这个图像中圆点直径是20、左右间距和上下间距都是10。

最后绘制的效果如下:

这里我们先实现了将二进制01转为图像的基础功能,实际使用时还需要将绘制功能放到一个监控文件是否修改的线程里去,这样就能在检测到文件被修改后立即刷新图像。接下来需要做的就是将图片信息转为二进制内容,后续如何请继续关注我的博客吧。

完整代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace DotSimulate
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //绘制一行的圆点
        public void drawLine(string line, int x, int y, int diam, int zyGap) {
            //创建GDI对像
            Graphics g = this.CreateGraphics();
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            //填充的颜色
            Brush bush0 = new SolidBrush(Color.Blue);
            Brush bush1 = new SolidBrush(Color.Red);
      
            for (int i = 0; i < line.Length;i++ )
            {
                char type = line;
                if (type == '0')
                {
                    g.FillEllipse(bush0, x, y, diam, diam);
                    x = x + zyGap + diam;
                }
                else {
                    g.FillEllipse(bush1, x, y, diam, diam);
                    x = x + zyGap + diam;
                }
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //全屏
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
            
            //各项参数
            int diam = 0;//直径
            int sxGap = 0;//上下间距
            int zyGap = 0;//左右间距
            int x = 0;//当前x轴坐标
            int y = 0;//当前y轴坐标

            //按行读取文件
            StreamReader sr = new StreamReader("TestFile.txt");
            string line = "";
            int count = 0;
            while ((line = sr.ReadLine()) != null) {
                //1 约定第一行是圆点直径
                if(count == 0){
                    diam = int.Parse(line);
                    count++;
                    continue;
                }
                //2 约定第二行是圆点上下间距
                if(count == 1){
                    sxGap = int.Parse(line);
                    count++;
                    continue;
                }
                //3 约定第三行是圆点左右间距
                if (count == 2)
                {
                    zyGap = int.Parse(line);
                    count++;
                    continue;
                }
                //4 从第四行开始是开始绘制圆点的01指示 0表示不绘制,1表示绘制,一次绘制一行
                drawLine(line, x, y, diam, zyGap);
                y = y + diam + sxGap;
            }
        }
    }
}


作者: 布兰姥爷, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3887969.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 15
赞赏0

文章评论3条评论)

登录后参与讨论

curton 2019-5-22 08:14

学习

curton 2019-4-24 17:15

好文章 学习了

givh79_163.com 2019-4-8 08:35

马克
相关推荐阅读
布兰姥爷 2019-11-04 21:09
【零基础】使用Tensorflow实现神经网络
一、序言  前面已经逐步从单神经元慢慢“爬”到了神经网络并把常见的优化都逐个解析了,再往前走就是一些实际应用问题,所以在开始实际应用之前还得把“框架”翻出来,因为后面要做的工作需要我们将精力集中在业务...
布兰姥爷 2019-10-29 23:16
【零基础】神经网络优化之Adam
一、序言  Adam是神经网络优化的另一种方法,有点类似上一篇中的“动量梯度下降”,实际上是先提出了RMSprop(类似动量梯度下降的优化算法),而后结合RMSprop和动量梯度下降整出了Adam,所...
布兰姥爷 2019-10-29 11:25
【零基础】神经网络优化之动量梯度下降
一、序言  动量梯度下降也是一种神经网络的优化方法,我们知道在梯度下降的过程中,虽然损失的整体趋势是越来越接近0,但过程往往是非常曲折的,如下图所示:    特别是在使用mini-...
布兰姥爷 2019-10-27 23:15
【零基础】神经网络优化之mini-batch
一、前言  回顾一下前面讲过的两种解决过拟合的方法:  1)L0、L1、L2:在向前传播、反向传播后面加个小尾巴  2)dropout:训练时随机“删除”一部分神经元  本篇要介绍的优化方法叫mini...
布兰姥爷 2019-10-24 15:45
【零基础】神经网络优化之dropout和梯度校验
一、序言  dropout和L1、L2一样是一种解决过拟合的方法,梯度检验则是一种检验“反向传播”计算是否准确的方法,这里合并简单讲述,并在文末提供完整示例代码,代码中还包含了之前L2的示例,全都是在...
布兰姥爷 2019-10-18 13:01
【零基础】神经网络优化之L1、L2
一、序言  前面的文章中,我们逐步从单神经元、浅层网络到深层网络,并且大概搞懂了“向前传播”和“反向传播”的原理,比较而言深层网络做“手写数字”识别已经游刃有余了,但神经网络还存在很多问题,比如最常见...
我要评论
3
15
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条