来自mjpeg流的已保存的jpeg文件在python中无法被PIL识别

时间:2013-02-02 16:03:53

标签: python image jpeg python-imaging-library mjpeg

我正在尝试从网络摄像头的MJPEG流中抓取有效的JPEG帧。我成功地将它写入磁盘,我可以在像Infranview这样的程序中打开它,但是Python和其他图形程序并不认为它是有效的JPEG文件。我写了这个函数snarfs它并将其写入磁盘

def pull_frame(image_url,filename):
    flag = 0
    # open the url of the webcam stream
    try:
            f = urllib.urlopen(image_url)
    except IOError:
            print "uh oh"
    else:
            # kill first two lines
            try:
                    null = f.readline()
            except:
                    print "duh"
            null = f.readline()
            pop = f.readline()
            # this pulls the length of the content
            count = pop[16:] # length of content.
            print "Size Of Image:" + count
            # read just the amount of the length of content
            if int(count):
                    s = f.read(int(count))
                    flag = 1
                    # write it to a file name
                    p = file(filename,'wb')
                    p.write(s)
                    p.close()

所以我得到了破坏的JPEG,我甚至尝试使用FFMPEG从破坏的jpegs中生成有效的PNG,并且它从comamnd行工作但不是从子进程工作。有没有办法在python中使用合适的jpeg头从mjpeg steam中拉出这个jpeg?

这是一个指向camera1.jpg的链接,这是此例程中保存的数据的一个示例,该数据未被识别且没有缩略图(尽管infraview可以打开它作为jpg查找) http://www.2shared.com/photo/OfZh2XeD/camera1.html

0 个答案:

没有答案