Python ssh读取映像
我使用的是Python 2.7和OpenCV 2.4。我想从远程机器读取并显示图像。然后,我尝试使用库paramiko。但是,我无法读取该文件 这是我的密码。首先,我导入所有库并设置连接:Python ssh读取映像,python,opencv,ssh,sftp,paramiko,Python,Opencv,Ssh,Sftp,Paramiko,我使用的是Python 2.7和OpenCV 2.4。我想从远程机器读取并显示图像。然后,我尝试使用库paramiko。但是,我无法读取该文件 这是我的密码。首先,我导入所有库并设置连接: import paramiko import cv2 s = paramiko.SSHClient() s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect("XXX.XXX.XXX",22,username="NAME",pass
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')
我尝试打印远程\u文件
:打印远程\u文件
它返回0x000000000572C50处的**paramiko.sftp_file.SFTPFile对象**
最后,我尝试阅读并显示图像:
img = cv2.imread(remote_file)
cv2.imshow("image", img)
然而,错误出现了:
文件“ssh.py”,第25行,在
img=cv2.imread(远程文件)
TypeError:应为字符串或Unicode对象,找到SFTPFile
_________________________________________________________________________-
我请求帮助如何从另一台远程机器读取图像。我的方式是正确的吗?谢谢。这里有一个解决方案:
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)
为什么您希望
imread
(接受文件路径)将与类型为SFTPFile
的对象一起工作?您最好的机会是从SFTPFile
中取出二进制文件,然后使用imdecode
@Miki谢谢您的回复。如何从SFTPFile
中取出二进制文件(或字符串)?
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)