我想用Delphi作BMP的图像处理,对一幅简单的BMP图像,根据灰度的差异,将灰度相同的区域动态的显示出来,如一幅图像上有几个字,要割划出它的轮廓,这应该怎么实现呀??

解决方案 »

  1.   

    这玩意儿可不简单,就是photoshop做的也不是很好使,要是容易的话很多搞地图数字化的人就没饭吃了。
    我建议你放弃这个想法,反正我是不去想的,呵呵。实在要坚持的话先去学计算机图形学。
    ----------------------------------------------
                       riff ur life
      

  2.   

    逐行,点扫描,bmp 有个scanline嘛,你将不同灰度值逐一提出,譬如
    将灰度值为 (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, 这样就算是截图啦。思想是正确的了,不过算法你要找一找,这么愚蠢的算法只能用在小图上。前段时间我想过了这个问题,也做出了一些效果,做到截图这一步,本来想做车牌识别的, 不过坚持不到底, 现在又要忙其他的事,一直没时间再想了,如果你做得好的话,拿出来参考啦 。
      

  3.   

    如果是灰度相同就很简单了。
    1。先取灰度值,既鼠标位置的灰度值。
    2。扫描,将图象上的所有改灰度的点都变成另一种颜色,如clRed。
    3。Timage的Canvas内有Pixels[x,y]属性,是用来放颜色值 的,可读写。
    4。有了以上三点编个小程序就简单了吧。当然,速度可能慢一点。可以直接对图象存放的内存地址读写就快了。