Tag: image

车牌识别 – 确定像素比较的颜色范围

经过大量关于车牌检测的工作后,我决定在图像中简单地找到黄色像素的“图案”将是在图像中找到牌照位置的充分方法。 目前,我使用各种图形滤镜并检测白色像素图案,但事实certificate这是越来越成问题的。 现在提出这个问题,我知道“黄色”牌是基于亮度,环境等众多因素。 洞察这一点我需要一个范围来比较,例如: if(FindIfYellow(GetPixel(x,y))) 但是我不知道是否使用RGB值,特别是单个RGB值来确定颜色是否为黄色。 最后是否有一个网站或某种定义这些范围的信息? 我知道 R:255 G:255 B:0 是最纯净的黄色,但就范围而言,我不知道。 无论如何,希望这是一个合理的想法,我发布的原因是为了确保我没有忽略某些东西,就像我经常做的那样:)。

正则表达式在C#中获取图像的SRC

我正在寻找一个正则表达式来隔离img的src值。 (我知道这不是最好的方法,但这是我在这种情况下必须做的) 我有一个字符串,其中包含简单的HTML代码,一些文本和图像。 我需要从该字符串中获取src属性的值。 到目前为止,我只设法将整个标签隔离开来。 string matchString = Regex.Match(original_text, @”(]+)>)”).Value;

Graphics.DrawImage对于更大的图像来说太慢了吗?

我正在制作游戏,我希望有一个带有背景图像的主菜单。 但是,我发现Graphics.DrawImage()方法确实很慢。 我做了一些测量。 我们假设MenuBackground是我的资源图像,分辨率为800 x 1200像素。 我将它绘制到另一个800 x 1200位图上(我首先将所有内容渲染到缓冲区位图,然后我将其缩放并最终将其绘制到屏幕上 – 这就是我如何处理多个玩家分辨率的可能性。但它不应该影响它以任何方式,见下一段)。 所以我测量了以下代码: Stopwatch SW = new Stopwatch(); SW.Start(); // First let’s render background image into original-sized bitmap: OriginalRenderGraphics.DrawImage(Properties.Resources.MenuBackground, new Rectangle(0, 0, Globals.OriginalScreenWidth, Globals.OriginalScreenHeight)); SW.Stop(); System.Windows.Forms.MessageBox.Show(SW.ElapsedMilliseconds + ” milliseconds”); 结果让我感到惊讶 – Stopwatch测量的东西在40 – 50 milliseconds之间。 并且因为背景图像不是唯一要绘制的东西,所以整个菜单需要大约100毫秒来显示,这意味着可观察到的滞后。 我试图将它绘制到Paint事件给出的Graphics对象,但结果是30 – 40 milliseconds – 没有太大的变化。 那么,是否意味着Graphics.DrawImage()无法用于绘制更大的图像? 如果是这样,我该怎么做才能提高游戏性能?

如何将图像像素的值作为RGB读入2d数组?

我正在为我的方形平台平台游戏制作一个二维地图编辑器,当我意识到我真的可以使用一个图像编辑器,它具有重绘相邻像素的能力等等,所以我想我应该尝试通过应用程序读取绘制的水平然后将其转换为轻量级格式。 我不确定是否使用位图格式是必须的,但我想,读取特定像素比使用PNG更容易。 所以我的目标是打开一个图像,遍历每个像素,寻找适合我的图块方案的颜色,并将相应的图块放入块数组中。 注意:我已经有了轻量级格式,所以我只需要将像素值读入数组。 解决方案:我的草图如下所示: Bitmap myBitmap = new Bitmap(@”input.png”); for (int x = 0; x < myBitmap.Width; x++) { for (int y = 0; y < myBitmap.Height; y++) { Color pixelColor = myBitmap.GetPixel(x, y); // things we do with pixelColor } } 例2: Bitmap myBitmap = new Bitmap(@”input.png”); for (int x = 0; x […]

如何使用.NET在电子邮件正文中嵌入多个图像

我正在编写一个程序,向用户发送电子邮件,其中包含嵌入在电子邮件正文(HTML)中的多个图像(图表)。 当我尝试这里的样本时…当我只需要嵌入一个图像http://www.systemnetmail.com/faq/4.4.aspx时效果很好。 但是,当我尝试使用以下代码嵌入多个图像时,没有嵌入任何图像,而是将它们作为附件发送。 public MailMessage MailMessage(Metric metric, DateTime date) { MailMessage msg = new MailMessage(); msg.From = new MailAddress(“test@gmail.com”, “User1”); msg.To.Add(new MailAddress(“test@gmail.com”)); msg.Subject = “Trend for metric: ” + metric.Name; msg.IsBodyHtml = true; // Generate the charts for the given metric var charts = this.GenerateCharts(metric, date); int i = 0; string htmlBody = “”; List […]

使用itextsharp从PDF中提取图像

我试图使用itextsharp从pdf中提取所有图像,但似乎无法克服这一个障碍。 System.Drawing.Image ImgPDF = System.Drawing.Image.FromStream(MS);行出现错误System.Drawing.Image ImgPDF = System.Drawing.Image.FromStream(MS); 给出“参数无效”错误。 我认为它适用于图像是位图而不是任何其他格式的图像。 我有以下代码 – 抱歉长度; private void Form1_Load(object sender, EventArgs e) { FileStream fs = File.OpenRead(@”reader.pdf”); byte[] data = new byte[fs.Length]; fs.Read(data, 0, (int)fs.Length); List ImgList = new List(); iTextSharp.text.pdf.RandomAccessFileOrArray RAFObj = null; iTextSharp.text.pdf.PdfReader PDFReaderObj = null; iTextSharp.text.pdf.PdfObject PDFObj = null; iTextSharp.text.pdf.PdfStream PDFStremObj = null; try { […]

从Windows窗体中的相对路径加载图像

我的应用程序中有一个图像,我的winforms中有一张图片 public static string Correct_Icons = @”C:\Users\xyz\Documents\Visual Studio 2008\Projects\FileShareMgmt\FileShareMgmt\Resources\Correct.png”; public static string warning_Icon = @”C:\Users\xyz\Documents\Visual Studio 2008\Projects\FileShareMgmt\FileShareMgmt\Resources\Warning.png”; cell.Value = Image.FromFile(“Resources/warning_Icon); 但我只想要相对路径,而不是完整路径。 我想要这个 public static string Correct_Icons = “\Resources\Correct.png”; 和 …. /不工作

DrawImage调整图像太小

当我使用Graphics.DrawImage绘制图像并以比原始图像更大的尺寸绘制图像时,它最终会有点太小。 您可以在下图中看到: 绿线不应该是可见的,也不是图像的一部分。 相反,它们被绘制在图像后面,图像应该覆盖它们。 如何绘制尺寸合适的图像? 编辑 :我绘制绿色部分与我传递到DrawImage调用相同的矩形,具有图像应该有多大的确切尺寸。 所以我的价值观没有任何缺陷(我认为)。 编辑2 :我使用FillRectangle绘制绿色矩形,因此不需要进行笔计算。 此外,我记录了传递给图像和绿色填充的矩形的值,并且值是正确的。 这只是图像的关闭。 我稍后会发布代码,因为我现在不在我的电脑上。 编辑3 :这是我用来渲染图像的代码: // This is for zooming public readonly float[] SCALES = { 0.05f, 0.1f, 0.125f, 0.25f, 0.333f, 0.5f, 0.667f, 0.75f, 1.0f, 1.25f, 1.5f, 1.75f, 2.0f, 2.5f, 3.0f, 3.5f, 4.0f, 4.5f, 5.0f, 6.0f, 7.0f, 8.0f, 10.0f, 12.0f, 15.0f, 20.0f, 30.0f, 36.0f }; […]

更快地显示图片框

我正在尝试将图像快速加载到图片框中并绘制它们。 我将位图分配到图片框和显示时间之间有0.13秒的延迟。 每当我执行一个picturebox.refresh() ,它都会在调用paint方法之前的.13 – .15秒内延迟。 有没有办法摆脱这种延迟? 我在Visual Studio 2010中使用C#。我使用FreeImage库加载图像。 这是我的pictureBox_MouseMove事件中的代码: if (IsMouseDown || DrawLine.Checked || IsMovingBox) { Tracing.Trace(“Update Picture Box”); pictureBox.Refresh(); } 然后我在调用paint事件时追踪一条线。 延迟在两条迹线之间。 如果我在117kb使用双色调tiff图像,则延迟为.13秒。 将此图像加载到内存中需要0.04秒。 用这个位图替换我的picturebox位图需要0.01秒。 如果我在1125kb使用灰度jpg图像,则延迟为.14秒。 将此图像加载到内存需要0.26秒。 用这个位图替换我的picturebox位图需要0.33秒。

如何使用字节数组比较两个图像

我希望能够从Byte []转换为Image,反之亦然。 我从这里开始这两种方法: public byte[] imageToByteArray(System.Drawing.Image imageIn) { MemoryStream ms = new MemoryStream(); imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif); return ms.ToArray(); } public Image byteArrayToImage(byte[] byteArrayIn) { MemoryStream ms = new MemoryStream(byteArrayIn); Image returnImage = Image.FromStream(ms); return returnImage; } 他们似乎工作,但如果我这样做: byte[] pic = GetImageFromDb(); bool result = pic == imageToByteArray(byteArrayToImage(pic)); 我得到result = false ! 有没有办法纠正这种方法或一些不同的function来实现我的目标? 谢谢!