0

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

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

但是,当传感器在使用当前代码操作时第一次检测到图像时,可以很好地捕获图像。

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

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

在此处输入图像描述

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()
4

0 回答 0