当前位置: 首页 > news >正文

杨振宁大学物理视频中黄色的字去掉(稳定简洁版本,四)

杨振宁大学物理1214

色带矩形带来很大麻烦!

今天想到一个方法,整个色带矩形拉通,做个通铺处理,不计算,代码做最小化,最稳定追求。

因为黄色字稳定,我们找到他的中心,而这个色带矩形和这个中心的关系及其稳定。

timer中最后整理的代码:

  Bitmap    glob_curBitmap = bmp;
                    Rectangle rc = new Rectangle(0, 0, glob_curBitmap.Width, glob_curBitmap.Height);
                    System.Drawing.Imaging.BitmapData bmpdata = glob_curBitmap.LockBits(rc,
                          System.Drawing.Imaging.ImageLockMode.ReadWrite,
                          glob_curBitmap.PixelFormat);
                    IntPtr imageptr = bmpdata.Scan0;
                    int ww = glob_curBitmap.Width;
                    int hh = glob_curBitmap.Height;

                   
                    int bytes = 0;
                 
                        bytes = ww * hh * 4;//此处针对的是32位位图
                   
                    byte [] rgbValues = new byte[bytes];

                //    pictureBox1.Image = bmp2;
                //    byte[] 
                        glob_buffer8 = new byte[ww * hh];
                        rgbbufercopyB = new byte[ww * hh];
                        rgbbufercopyG = new byte[ww * hh];
                        rgbbufercopyR = new byte[ww * hh];
                    System.Runtime.InteropServices.Marshal.Copy(imageptr, rgbValues, 0, bytes);
                    glob_curBitmap.UnlockBits(bmpdata);
                  

                
                    
                       
                        for (int ii = 0; ii <  hh; ii++)
                        {
                      for (int j =0; j <  ww; j++)
                            {
                                int n = ii * ww + j;
                            

                                rgbbufercopyR[n] = rgbValues[4 * n + 2] ;
                                rgbbufercopyG[n] = rgbValues[4 * n + 1] ;
                                rgbbufercopyB[n] = rgbValues[4 * n] ;
                              
                                glob_buffer8[n] = (byte)(0.3 * rgbValues[n * 4 + 2] + 0.6* rgbValues[n * 4 + 1] + 0.1 * rgbValues[n * 4]);
                                  
                                
                            }
                        }

  //使用新方法,原版改进,不必匹配,利用黄色稳定性202412131248
         
          
            int junzhix = 0;
            int junzhiy = 0;
            int 计数 = 0;
            for (int i = 240; i < 480; i++)//我们认为黄色字在图像下半部
            {
                byte fugair = 0; byte fugaig = 0; byte fugaib = 0;
                byte fugai = 0;

                for (int j = 0; j < 640; j++)
                {
                    int n = i * ww + j;
                    float hue = 0;
                    RGB2HSLTest(rgbValues[4 * n + 2], rgbValues[4 * n + 1], rgbValues[4 * n], ref hue);

                    if (hue > 35 && hue < 85)//,黄色范围给的比较宽泛                       
                    {//黄色

                        //新增,寻找黄色字50-63外接矩形202412130850
                        if (hue > 50 && hue < 63)//黄色收窄
                        {
                        
                            junzhiy += i;
                            junzhix += j;
                            计数++;
                        }

                        rgbValues[4 * n + 2] = (byte)(rgbValues[4 * n + 2 - 4 * ww] / 2 + fugair / 2);
                        rgbValues[4 * n + 1] = (byte)(rgbValues[4 * n + 1 - 4 * ww] / 2 + fugaig / 2);
                        rgbValues[4 * n] = (byte)(rgbValues[4 * n - 4 * ww] / 2 + fugaib / 2);

                    }
                    else
                    {
                        rgbbufercopyR[n] = fugair = rgbValues[4 * n + 2];
                        rgbbufercopyG[n] = fugaig = rgbValues[4 * n + 1];
                        rgbbufercopyB[n] = fugaib = rgbValues[4 * n];
                    }
                }
            }

            黄色中心 = new Point(junzhix / 计数, junzhiy / 计数);
            textBox15.Text = 黄色中心.X.ToString();
            textBox16.Text = 黄色中心.Y.ToString();

//消除色带矩形

   for (int i = 0; i < 640; i++)

                for (int j = 黄色中心.Y - 58; j < 黄色中心.Y + 60; j++)//58+60=118=色带矩形高
                {
                    int temp = j * 640 + i;//原方法
                    rgbValues[temp * 4] = (byte)(rgbValues[temp * 4] + 50 > 255 ? 255 : rgbValues[temp * 4] + 50);
                    rgbValues[temp * 4 + 1] = (byte)(rgbValues[temp * 4 + 1] + 50 > 255 ? 255 : rgbValues[temp * 4 + 1] + 50);
                    rgbValues[temp * 4 + 2] = (byte)(rgbValues[temp * 4 + 2] + 50 > 255 ? 255 : rgbValues[temp * 4 + 2] + 50);

                }

 showrgbbuffer2pict(rgbValues, ww, hh, pictureBox1);

ok,一种方法走到底,持续的改进使得现在这个版本感觉比机器视觉匹配版本好

所有都做完了,想一下能不能就在原来的网页上实现相同功能,把我们验证后的程序界面隐去呢?

可以试一试,绝对可以!

我的电脑屏幕是1366*768的,其他电脑分辨率没试过,你也可以去试一试,如果有问题,可以做相应修改,一定能行!

http://www.lryc.cn/news/504337.html

相关文章:

  • 排序算法(5):归并排序
  • Gate学习(7)引入体素源
  • 2024.12.14 TCP/IP 网络模型有哪几层?
  • item2 for macos
  • 二维三维空间上两点之间的距离
  • 相机测距原理
  • Debezium SchemaNameAdjuster 分析
  • Stable Diffusion绘画 | SDXL模型使用注意事项
  • (五)机器学习 - 数据分布
  • Flink State面试题和参考答案-(上)
  • 利用开源Stable Diffusion模型实现图像压缩比竞争方法用更低的比特率生成更逼真的图像
  • QT信号与槽机制详解
  • openGauss开源数据库实战二十二
  • BurpSuite解决暴力破解时需要验证码问题
  • WPF Combox使用 Text无法选择正确获取CHange后的Text
  • 【速览】设计模式(更新中)
  • 【stable diffusion部署】Stable Diffusion开源本地化的文生图图生图AI
  • 县城楼市踩踏式降价,或现2字头,率先回归月薪一平方的合理价格
  • 计算机组成原理(七):二进制编码
  • 【GitHub分享】you-get项目
  • 论文概览 |《Sustainable Cities and Society》2024.12 Vol.116
  • 解决node.js的req.body为空的问题
  • Mysql学习笔记之安装
  • 将PDF流使用 canvas 绘制然后转为图片展示在页面上(二)
  • 【深度学习】 零基础介绍卷积神经网络(CNN)
  • Coze概述
  • 康佳Android面试题及参考答案(多张原理图)
  • 2022 年 3 月青少年软编等考 C 语言四级真题解析
  • 关于24年408真题的疑问
  • 【容器】k8s学习笔记基础部分(三万字超详细)