我想用Delphi作BMP的图像处理,对一幅简单的BMP图像,根据灰度的差异,将灰度相同的区域动态的显示出来,如一幅图像上有几个字,要割划出它的轮廓,这应该怎么实现呀??
解决方案 »
- Delphi 调用存储过程 错误号为ORA-06550
- MYSQL问题!怎么导入已存在的数据列中的某一列数据?
- DELPHI 日期计算操作的问题?急?
- 明天生日,散分!顺便祝大家端午节快乐!
- 终于进来了,问几个小问题,请指教!!多谢!
- 关于Playsound的问题?
- TADOQuery的onposterror事件什么时间响应?我在onposterror事件中写的代码为什么不执行?
- 大家帮帮我,一个DELPHI安装时的问题。(先谢了)
- 请问如何用D6调用16位动态连接库?(即如何用32位的程序调用16位的动态连接库)
- 这里真不错,Can you help me?快快快
- delphi初学者问题
- 如何实现将一系列信息写入MEMO中,每种信息分行实现?
我建议你放弃这个想法,反正我是不去想的,呵呵。实在要坚持的话先去学计算机图形学。
----------------------------------------------
riff ur life
将灰度值为 (31,31,31) 的所有点提出,先将其他不是(31)的设为0接着,bmp 有一scanline 的东东,
定义一个 p:pbytearray;
p:=bmp.scanline[h] //h为第几行 p^[0],p^[1],p^[2]就是h 行第一点的 bmp 值.跟着用算法罗,八个方向扫描一次,有相同点就用个递归继续扫描,直到与第一点重合,当然,一路扫描要一路记录 rect() , 扫描完一周后就将这个rect 中 copy 到一个新的 bmp.cavas, 这样就算是截图啦。思想是正确的了,不过算法你要找一找,这么愚蠢的算法只能用在小图上。前段时间我想过了这个问题,也做出了一些效果,做到截图这一步,本来想做车牌识别的, 不过坚持不到底, 现在又要忙其他的事,一直没时间再想了,如果你做得好的话,拿出来参考啦 。
1。先取灰度值,既鼠标位置的灰度值。
2。扫描,将图象上的所有改灰度的点都变成另一种颜色,如clRed。
3。Timage的Canvas内有Pixels[x,y]属性,是用来放颜色值 的,可读写。
4。有了以上三点编个小程序就简单了吧。当然,速度可能慢一点。可以直接对图象存放的内存地址读写就快了。