前言
对图像进行处理与识别的前提,是先读取图像的像素。而每个像素有R、G、B三种颜色组成,然后对图片中大量的0~255之间的RGB灰度值进行深入分析和处理。
在C#中读取图像像素、根据像素数组绘制图像的方法有:
(1)Bitmap的GetPixel/SetPixel;
(2)非托管内存的方式Marshal.Copy;
1. Bitmap的GetPixel、SetPixel
/// <summary>
/// author:huangyq1984@qq.com
/// 读取位图的RGB灰度值,按BGR的顺序存放到一维数组中
/// </summary>
/// <param name="bitmap"></param>
/// <returns></returns>
public static byte[] GetImageRgb_Pixel(Bitmap bitmap)
{
if (bitmap == null)
return null;
//数据长度是像素总数*3
byte[] bytes = new byte[bitmap.Width * bitmap.Height * 3];
int i = 0;
for (int x = 0; x < bitmap.Width; x += 1)
{
for (int y = 0; y < bitmap.Height; y += 1)
{
//获取指定像素的Color
Color c = bitmap.GetPixel(x, y);
//按BGR的顺序存放到数组中
bytes[i] = c.B; i += 1;
bytes[i] = c.G; i += 1;
bytes[i] = c.R; i += 1</

本文介绍了在C#中使用Bitmap的GetPixel/SetPixel方法和非托管内存的Marshal.Copy方法来读取和处理图像像素,特别强调了方法二在效率上的优势,并提供了相应的代码示例和两者在前端调用的应用场景。

8309

被折叠的 条评论
为什么被折叠?



