2016-06-16 11 views
2

Я использую Python 2.7 и OpenCV 2.4. Я хочу прочитать и показать изображение с удаленной машины. Затем я пытаюсь использовать библиотеку paramiko. Однако я не могу прочитать файл.Python ssh read image

Вот мой код. Во-первых, я импортировать все библиотеки и настройки соединения:

import paramiko 
import cv2 
s = paramiko.SSHClient() 
s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
s.connect("XXX.XXX.XXX",22,username="NAME",password='PW',timeout=4) 

Во-вторых, я открываю SFTP сессию и открыть изображение цели:

sftp = s.open_sftp() 
remote_file = sftp.open('/home/frame/image.jpg') 

я пытаюсь напечатать remote_file: print remote_file

Это возвращается **paramiko.sftp_file.SFTPFile object at 0x000000000572AC50**

И наконец, я пробую прочитать и показать изображение:

img = cv2.imread(remote_file) 
cv2.imshow("image", img) 

Однако ошибка выходит:

File "ssh.py", line 25, in <module> 
    img = cv2.imread(remote_file) 
TypeError: expected string or Unicode object, SFTPFile found 

_________________________________________________________________________-

Я прошу о помощи, как я могу считывать изображение с другого удаленного устройства. Правильно ли это сделать? Спасибо.

+2

Почему вы ожидаете, что 'imread' (который принимает путь к файлу) будет работать с объектом типа' SFTPFile'? Лучше всего получить двоичный файл из 'SFTPFile', а затем использовать' imdecode' – Miki

+0

@Miki Спасибо за ваш ответ. Как я могу получить двоичный файл (или строку) из 'SFTPFile'? – VICTOR

ответ

2

Вот решение:

import numpy as np 

... 

sftp = s.open_sftp() 
with sftp.open('/home/frame/image.jpg') as f: 
    img = cv2.imdecode(np.fromstring(f.read(), np.uint8), 1) 

cv2.imshow("image", img) 
cv2.waitKey(0) 
+0

Это работает !!!!!!!!!!!!! Спасибо, Стерн! – VICTOR

 Смежные вопросы

  • Нет связанных вопросов^_^