使用python

时间:2016-11-10 20:11:04

标签: python ftp

我有以下问题要解决:

相机每秒大约拍摄三张照片并将其保存在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)

0 个答案:

没有答案