王权富贵:服务器和本地电脑使用STFP服务进行数据传输

        本地电脑使用Python2.7的环境。

       主要功能是用摄像头读取图片并使用SFTP服务进行传输。为了让服务器知道数据已经传输完毕了,使用SSH创建一个文件夹,通过查找这个文件夹是否存在来判定是否传输完毕。最后还是用SFTP服务进行处理完图片的回传

        我用以下代码和服务器上的faster-rcnn配合,实现本地端的目标检测。

# -*- 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)

猜你喜欢

转载自blog.csdn.net/a1103688841/article/details/85134852
今日推荐