本地电脑使用Python2.7的环境。
主要功能是用摄像头读取图片并使用SFTP服务进行传输。为了让服务器知道数据已经传输完毕了,使用SSH创建一个文件夹,通过查找这个文件夹是否存在来判定是否传输完毕。最后还是用SFTP服务进行处理完图片的回传
# -*- coding: utf-8 -*-
import os
import os.path
import paramiko
import datetime
import re
import cv2
import time
import numpy as np
config = {
# 本地项目路径
\'local_path\': \'C:\\project\\opencv-python\',
# 服务器项目路径
\'ssh_path\': \'/root/faster_rcnn3/Faster-RCNN_TF-master/data\',
# 项目名
\'project_name\': \'demo\',
# 忽视列表
\'ignore_list\': [],
# ssh地址、端口、用户名、密码
\'hostname\': \'fw.trinicloud.cn\',
\'port\': 37294,
\'username\': \'root\',
\'password\': \'778987664\'
}
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=config[\'hostname\'], port=config[\'port\'], username=config[\'username\'],password=config[\'password\'])
# ssh传输
transport = paramiko.Transport((config[\'hostname\'], config[\'port\']))
transport.connect(username=config[\'username\'], password=config[\'password\'])
sftp = paramiko.SFTPClient.from_transport(transport)
cap=cv2.VideoCapture(0)
while True:
#从摄像头读取图片
sucess,img=cap.read()
begin1 = datetime.datetime.now()
k=cv2.waitKey(1)
if k == 27:
#通过esc键退出摄像
cv2.destroyAllWindows()
break
res = cv2.resize(img, (400, 300), interpolation=cv2.INTER_CUBIC)
cv2.imwrite(\"demo/image2.jpg\", res)
print(\'数据保存完毕,保存路径demo/image2.jpg===10%\')
local_path=\'C:\\project\\opencv-python\\demo\\image2.jpg\'
ssh_path=\'/root/faster_rcnn3/Faster-RCNN_TF-master/data/demo/image2.jpg\'
print(\'从\'),local_path,(\'传数据到\'),ssh_path,(\'==20%\')
sftp.put(local_path, ssh_path)
ssh.exec_command(\'mkdir /root/faster_rcnn3/Faster-RCNN_TF-master/data/demo/image2\')
print(\'数据上传成功==25%\' )
begin2 = datetime.datetime.now()
stdin, stdout, stderr = ssh.exec_command(\'find /root/faster_rcnn3/Faster-RCNN_TF-master/data/demo/image2\')
result = stdout.read().decode(\'utf-8\')
while (len(result) != 0):
stdin, stdout, stderr = ssh.exec_command(\'find /root/faster_rcnn3/Faster-RCNN_TF-master/data/demo/image2\')
result = stdout.read().decode(\'utf-8\')
end2_t = datetime.datetime.now()
time_mini = float(str((end2_t - begin2))[5:14])
print time_mini
end2 = datetime.datetime.now()
print(\'服务器处理完毕===50%\')
print(\'服务器处理耗时:\'), end2 - begin2, (\'==60%\')
src = \'/root/image2.jpg\'
des = \'C:/project/opencv-python/image2.jpg\'
print(\'从\'), src, (\'传数据到\'), des, (\'==70%\')
sftp.get(src, des)
print(\'数据回传成功==80%\')
print(\'数据一个周期完成==99.9%\')
end1 = datetime.datetime.now()
print(\'花费时间是:\'), end1 - begin1, (\'==100%\')
img = cv2.imread(\"image2.jpg\")
cv2.destroyAllWindows()
cv2.imshow(\"image2\", img)
继续阅读与本文标签相同的文章
上一篇 :
PHP通过二进制流判断文件类型
-
[MySQL] docker下安装使用mysql配置主从复制
2026-05-18栏目: 教程
-
微信小程序实现点击改变icon的颜色样式
2026-05-18栏目: 教程
-
微信小程序的接口请求
2026-05-18栏目: 教程
-
微信小程序兼容性问题。
2026-05-18栏目: 教程
-
flex的兼容性处理问题
2026-05-18栏目: 教程
