当前位置:AIGC资讯 > 数据采集 > 正文

基于python的opencv摄像头采集

直接上例程

# -*- 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格式图像并以多线程方式上传到服务器

更新时间 2023-11-08