软件杂谈:opencv读取远程url图片以及mp4视频文件

一、使用urllib,paramiko读取指定图片和视频

        paramiko的sftp用于获取服务器上的指定文件名,需要安装openssl-server,openssl-client

        urllib用于读取图片和视频。

        需要注意:读取http视频文件需要将moov移动到mp4的头部,使用ffmpeg   

ffmpeg -i a.mp4 -c copy -movflags faststart a1.mp4

        可以自己准备两台电脑尝试:com1,com2

        电脑com1开启http文件服务,nohup 后台执行服务

nohup python3 -m http.server 8001

打开浏览器访问文件,结果如下图。

二、参考代码如下


import paramiko
from ipdb import set_trace
import cv2
import os
import urllib
import numpy as np
 
# 服务器信息,主机名(IP地址)、端口号、用户名及密码
hostname = "192.168.0.165"
port = 22
username = "liux"
password = "123"
# 建立SSH连接
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,port,username, password,compress=True)
 
# 建立SFTP连接
sftp = ssh.open_sftp()
 
# 获取图片文件名
file_names = []
folder_path = '/home/liux/sftp/'
for file_info in sftp.listdir_attr(folder_path):
    if not file_info.filename.startswith('.'):  # 排除无效文件,如'.DS_Store'
        #video mp4
        # if file_info.filename.endswith((".mp4")):
        # img
        if file_info.filename.endswith(('.jpeg', '.jpg', '.png')):
            file_names.append(file_info.filename)
            # video url 
            # imagepath = os.path.join('http://192.168.0.165:8001/', file_names[0])
            # cap = cv2.VideoCapture(imagepath)
            # image url
            imagepath = os.path.join('http://192.168.0.165:8001/', file_names[0])
            resp = urllib.request.urlopen(imagepath)
            image = np.asarray(bytearray(resp.read()), dtype="uint8")
            image = cv2.imdecode(image,cv2.IMREAD_COLOR)
            cv2.imwrite("result.jpg",image)
# 关闭SFTP连接
sftp.close()
print(file_names)

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值