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

杨振宁大学物理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 (i**nt 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的,其他电脑分辨率没试过,你也可以去试一试,如果有问题,可以做相应修改,一定能行!

相关推荐
点云SLAM2 天前
CVPR 2024 图像、视频处理总汇(视频字幕、图像超分辨率、图像分类和压缩等)
图像处理·深度学习·计算机视觉·视频处理·3dgs·cvpr2024
点云SLAM6 天前
CVPR 2024 视频处理方向总汇(视频监控、视频理解、视频识别和视频预测等)
python·计算机视觉·音视频·视频监控·视频处理·视频理解
工业机器视觉设计和实现1 个月前
杨振宁大学物理视频中黄色的字,c#写程序去掉(原版改进,三)
c#·视频处理
工业机器视觉设计和实现1 个月前
杨振宁大学物理视频中黄色的字,c#写程序去掉(原版改进,二)
c#·视频处理
杨德杰1 个月前
开源ISP介绍(2)————嵌入式Vitis搭建
图像处理·fpga·isp·视频处理·嵌入式vitis
机器学习是魔鬼2 个月前
HelloMeme 上手即用教程
数字人·图片处理·视频处理·魔改·hellomeme
知来者逆5 个月前
视频插帧—— RIFE 和 IFNet 的机制和应用
图像处理·计算机视觉·mvc·视频处理·视频插帧·补帧
小时了了6 个月前
SDL3 入门(5):纹理渲染
视频处理·sdl3·图形图像
知来者逆6 个月前
VideoAgent——使用大规模语言模型作为代理来理解长视频
人工智能·算法·语言模型·音视频·实时音视频·视频处理