使用Python将图片转成文本

图像处理的嵌入式项目中常常要将图片提前写到板子的SDRAM里面,然后在线调试,如果每次都从摄像头中拍摄图片,是很麻烦也很不稳定的。这就涉及到一个小工具,将各类格式的图片转换为文本,即一连串的0~255之间的整数,然后改写成一个巨大的二维数组,再将这个数组烧写到芯片中去。

如下是使用Python实现的这一功能,选择Python实现有很多好处,首先解释性语言,不需要编译,修改起来方便,同时,各种格式图片都能方便读取,如果使用C语言,避免不了还要用到ImageMagick库。

#!/usr/bin/env python

import Image

def pic2txt(infile,outfile):
    ff = open(outfile,'w')
    f = Image.open(infile)
    width,height = f.size
    ff.write('['+str(height)+']['+str(width)+']\n') #将大小写到第一行
    s = f.tostring() #将图片内容转换为字条串
    I = 0

    #get the proper mid pixel value
    min_val = ord(min(s))
    max_val = ord(max(s))
    mid_val = (min_val+max_val)/2
    print "min:mid:max = ",min_val,":",mid_val,":",max_val
    #jpg maybe RGB or Gray
    isGray = 1
    if width*height*3 == len(s):
            isGray = 3

    #start to sample
    while I<width*height*isGray:
    n = ord(s[I])
    if n<mid_val: #以mid_val为阈值
        n = 0
    else:
        n = 255
    ff.write(str(n))
    ff.write(",")
    I = I + isGray 
    if I%(width*isGray) == 0:
        ff.write("\n")

    ff.close()

if __name__=="__main__":
    infile = 'test.jpg' #要读取的目标图片
    outfile = 'result.txt' #要写入的最终文件
    pic2txt(infile,outfile)

jpg有可能有RGB三个分量,也可能是灰度图,本身只一个分量,嵌入式中,尤其是基于DSP的图像识别,常常处理的是灰度图。

发表于 2010年12月01日 02:24   评论:0   阅读:3355  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo