我有以下问题要解决:
相机每秒大约拍摄三张照片并将其保存在FTP服务器上。我想使用python访问FTP服务器,下载图像并使用OpenCV进行进一步处理。如果系统可以离线工作,它不会是一个挑战,但我想实现在线处理,即我想下载具有这样速率的文件,以便能够进行实时处理(或至少开始实时预览)。
目前下载一个文件大约需要一秒钟或更长时间。文件很小(50 kB),我想这里的问题是逐个下载文件造成的开销。有没有办法下载,例如一次来自FTP的10或100个文件?这会给我的处理带来一些延迟,但希望我能更好地流利。我的问题可能有其他解决办法吗?
到目前为止我的代码:
from ftplib import FTP
from StringIO import StringIO
import numpy as np
import cv2
ftp = FTP("ftp.name")
ftp.login("login", "passwd")
ftp.cwd("camera")
#Getting listing
ls = []
ftp.retrlines('MLSD', ls.append)
for entry in ls:
prop = entry.split(";")
#Skip if directory
if prop[0].split("=")[1] == "dir":
continue
#Getting file
r = StringIO()
ftp.retrbinary('RETR' + filename, r.write) #filename starts with space character
nparr = np.fromstring(r.getvalue(), np.uint8)
img_np = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
cv2.imshow("image", img_np)
cv2.waitKey(1)