直接上例程
# -*- coding: utf-8 -*-
import cv2
import numpy as np
from std_msgs.msg import String
import ftplib
ftp = ftplib.FTP() # 设置变量 ,实例化
ftp.set_debuglevel(2) # 打开调试级别2,显示详细信息
ftp.connect("255.255.255.255", 000) # 连接的ftp sever和端口
ftp.login("***", "**") # 连接的用户名,密码
bufsize = 1024
print(ftp.getwelcome()) # 打印出欢迎信息
ftp.cwd("/usr/cameraaround")
cap1 = cv2.VideoCapture(0) # 表示 打开内置摄像头,参数0是视频文件路径则打开视频
while cap1.isOpened(): # 返回值确定摄像头是否开启
det1, img1 = cap1.read() # 按帧读取数据,第一个参数是确定读取数据的返回值是否正确,第二个就是每一帧的图像
# det2, img2 = cap2.read()
if det1:
cv2.imshow('img1', img1) # 窗口显示,显示名为img1
k = cv2.waitKey(1)
cv2.imwrite('eee.jpeg', img1) # 第一个参数表示要写入的文件名,必须加入后缀名,第二个表示要写入的图像数据类型
cv2.waitKey(1)
img1 = cv2.imread('eee.jpeg')
print(img1.shape)
x, y = img1.shape[0:2] # 提取图像采集的长宽
img_test1 = cv2.resize(img1, (int(y / 18), int(x / 18))) # 长宽除三
cv2.imwrite('eee0.jpeg', img_test1) # 裁剪完保存图片
file = "eee0.jpeg"
file_handle = open(file, "rb") #
ftp.storbinary("STOR eee0.jpeg", file_handle, bufsize)
# cv2.imshow('r0', img_test1) # 展示裁剪完的图片
cv2.waitKey(400)
if k == ord('q'): # 等待键盘输入,,参数为1表示延时1ms切换下一帧图像,参数0表示只显示当前图像
break
cap1.release() # 释放摄像头
cv2.destroyAllWindows() # 关闭所有图像窗口
注释很详细,后续还有接收topic,转化为opencv格式图像并以多线程方式上传到服务器