如何解决如何将摄像头与来自arduino和SR04距离传感器的串行数据同步
我已将笔记本电脑与arduino + SR04传感器相连。我想做的是,一旦距离传感器检测到有人在笔记本电脑附近(距离读数小于50cm),我想使用python-opencv打开网络摄像头(&稍后保存此视频片段) 我面临的问题是arduino + SR04与python之间存在不同步的通信。即使在人离开后,传感器读数仍在phython控制台上弹出约3-4秒(这可能是由于传感器数据的写入速度不如相机显示快)。这么长时间的延迟,我的视频将占用很多空间。
我尝试将SR04传感器的延迟增加到500ms,但这使网络摄像头非常断断续续。我不希望视频断断续续。请帮忙
我的arduino + SR04代码
const int echo_pin = 9;
const int trig_pin = 10;
void setup() {
Serial.begin(9600);
pinMode(echo_pin,INPUT);
pinMode(trig_pin,OUTPUT);
}
void loop() {
double period,distance;
digitalWrite(trig_pin,LOW);
delayMicroseconds(2);
digitalWrite(trig_pin,HIGH);
delayMicroseconds(10);
digitalWrite(trig_pin,LOW);
period = pulseIn(echo_pin,HIGH);
distance = (period / 2) / 29.1;
//delay(500);
Serial.println(distance);
}
我的Python代码
import serial
import time
import cv2
cap = cv2.VideoCapture(0)
arduino = serial.Serial('COM10',9600)
def Measure():
distance = arduino.readline()
#time.sleep(.5)
print ("distance "+str(distance)+" cm")
return float(distance)
while True:
output = Measure()
if output < 50:
# Capture frame-by-frame
ret,frame = cap.read()
# Our operations on the frame come here
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# Display the resulting frame
cv2.imshow('frame',gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。