作者flyskycat (猫爪~抓抓抓)
看板C_Sharp
标题[问题] 想请教几行程式以及观念...
时间Mon Aug 23 11:41:40 2010
各位前辈好:
目前我正在学习影像处理的一些算法~
有看到书上有写,以下程式码,注解的部分我用白话来表示↓
//设定与影像大小相同的矩形区
Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height);
//宣告一个点阵图资料 bmpData,并且将影像的点阵图锁在记忆体中,记忆区块是一个
//矩形,而此区可供读写,资料格式是 PixelFormat (井民全先生的书是写成
//PixelFormat.Format24ppRgb)
System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect,
System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat);
//取得影像存放於记忆体中的起始位址
IntPtr ptr = bmpData.Scan0;
//计算整张影像所占的 byte 数目,由於每个像素占 3 个 byte,所以要乘以 3
int bytes = curBitmap.Width * curBitmap.Height * 3;
//创造一个存放 byte 的一维阵列
byte[] grayValues = new byte[bytes];
//将记忆体中的影像资料存入 grayValues 以供处理
System.Runtime.InteropServices.Marshal.Copy(ptr, grayValues, 0, bytes);
目前比较疑惑的是 PixelFormat 的格式要照着书上写的或者是以井民全先生的
PixelFormat.Format24ppRgb 为主呢?
我有查过 Format24ppRgb 是代表 R,G,B 各占 8 bits 的格式;可是PixelFormat 就
没看到是什麽意思 @_@?
照这个方法下去对影像作处理,似乎都是对每个 byte 的 R,G,B 去做处理,如此一
来在做计算的时候会变得有点麻烦。所以想问一下前辈们在做处理时,都是怎麽针对像素
做处理的?(尽量避免 GetPixel & SetPixel,因为会很慢)
我所使用的参考书籍是「C#数字图像处理算法典型实例」,不知道有没有更推荐的书
可以供我参考。
在此,先感谢各位不吝指教,如果小弟在观念上有错误,请大力鞭我 >"<
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.122.43.197
1F:→ flyskycat:解决了... 08/23 22:31