我正在尝试从网络摄像头的 MJPEG 流中获取有效的 JPEG 帧。我成功地将它写入磁盘,并且可以在 Infranview 之类的程序中打开它,但 Python 和其他图形程序不认为它是有效的 JPEG 文件。我编写了这个函数,将其捕获并将其写入磁盘
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从损坏的jpeg中制作一个有效的PNG,它从comamnd行而不是从子进程中工作。python有没有办法用正确的jpeg头从mjpeg蒸汽中拉出这个jpeg?
这是一个camera1.jpg的链接,它是该例程中保存的数据的示例,该例程无法识别并且也没有缩略图(尽管infraview可以将其打开为jpg) http://www.2shared.com/photo/的Zh2XeD/camera1.html