我正在尝试使用Arduino Uno使用网络摄像头拍摄快照。我正在使用PythonOpenCV与摄像头接口以捕获视频。我还在Arduino界面上使用pyserial,这样当按下按钮时,Arduino和python将进行交互,相机将拍摄照片。我遇到的问题是,当我运行Arduino的串行连接时,网络摄像头窗口没有加载视频,即(没有响应)。当我注释掉与串行接口相关的代码行时,相机窗口框架将加载,我可以查看视频。我认为,由于这两个设备都是通过USB连接到我的计算机上的,PySerial接管了串行接口,不允许摄像头视频馈送将其数据加载到接口上供我查看。我的问题是,有没有一种方法可以将两者连接在一起,这样当Arduino接收到数字输入时,它会向python发送一个“命令”,让网络摄像头拍照?如有任何建议,将不胜感激
站台:
视窗10 Python 3.8
Python代码:
import cv2
import serial
cam = cv2.VideoCapture(0)
ser = serial.Serial('COM7', 9600)
cv2.namedWindow("Object")
img_counter = 0
while True:
ret, frame = cam.read()
snap = ser.read()
ser.reset_input_buffer()
if not ret:
print("failed to grab frame")
break
cv2.imshow("Object", frame)
k = cv2.waitKey(1)
if k%256 == 27:
# ESC pressed
print("Program closing...")
break
elif str(snap) == '1':
# Button pressed
img_name = "opencv_frame_{}.png".format(img_counter)
cv2.imwrite(img_name, frame)
print("{} written!".format(img_name))
img_counter += 1
cam.release()
cv2.destroyAllWindows()
另外,如果这个问题看起来很基本,请原谅,我对这个工作范围有点不熟悉。我正在创建这个学校项目来连接神经网络和PLC。我也有一个Rasberry Pi,我可以用它来运行神经网络,但这是另一个对我来说有学习曲线的领域
输入串行连接超时
我认为read()没有用,而是readline()。您可以转换此数据(如果为intiger)
此datInt值是写入的intiger。 如果不是intiger,可以使用string方法,并使用more命令进行转换
如果要列出或读取更多数据,请在此处写一条消息
祝你好运
(对不起,我的英语不太好)
相关问题 更多 >
编程相关推荐