Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ssh读取映像_Python_Opencv_Ssh_Sftp_Paramiko - Fatal编程技术网

Python ssh读取映像

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

我使用的是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",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)