如何用python实现pi摄像机图像的多处理

2024-10-02 08:16:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个代码,当传感器使用多处理检测到相机图像时,它将捕获相机图像

使用多处理的原因目前不在代码中,但我想使用它在捕获期间实现不同的行为

然而,当传感器在使用当前代码操作时首次检测到图像时,图像被很好地捕获

从第二次检测开始,图像不像附加图像那样被捕获

在多处理中传递参数的方法似乎有问题,但如果您知道原因以及如何解决,请告诉我

enter image description here

import cv2
import cv2 as cv
import numpy as np
import io
from PIL import Image
import time
import picamera
import picamera.array
import RPi.GPIO as GPIO
from picamera.array import PiRGBArray
from datetime import datetime
import math
from multiprocessing import Process, Queue, Manager
import matplotlib.pyplot as plt

cameraSensor = 18       # pin No. of Camera
# Initialize the GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(cameraSensor, GPIO.IN, GPIO.PUD_DOWN)

cap = cv2.VideoCapture(0)
cap.set(3, 1280)    #x width
cap.set(4, 720) #y height
cap.set(5, 60)  #frame rate

def camera(queue):
    print("camera")
    startTime = time.time()
    endTime = 100
    num = 1
    
    ret, frame = cap.read()
    endTime = time.time()
    print('shot time : ',endTime - startTime)
    cv2.imwrite('/home/pi/Desktop/vision/frame/frame_'+str(time.time())+".jpg", frame)
    endTime = time.time()
    print('save time : ',endTime - startTime)

if __name__ == "__main__":
    print("start")
    GPIO.add_event_detect(cameraSensor, GPIO.RISING, bouncetime=800)
    queue = Manager().Queue()
    
    while True:
        if GPIO.event_detected(cameraSensor):
                process1 = Process(target=camera, args=(queue,))
                process1.start()

Tags: 代码from图像importgpiotimeascv2

热门问题