我目前正在尝试为我的项目实现实时反馈功能。我有一个功能应该使用 opencv 显示相机的实时反馈。当我在 ubuntu 版本 20.04 的英特尔 NUC 上本地运行代码时,我能够从显示器上看到视频源。但是,当我使用 XRDP 通过远程桌面连接时,我无法再看到视频源,也没有收到任何错误。我尝试在 ubuntu 版本 20.04 的树莓派上使用远程桌面并运行代码,它可以工作。
我检查了每个设备上的权限,发现树莓派上的用户包含在视频组中,而 NUC 上的用户不包含在视频组中。这是否是我在 NUC 上看不到任何视频源的原因?
这是使用的函数
def live_feed():
global ui_exit_flag
global image_capture_flag
while not ui_exit_flag:
# Check if image capture is in progress, and if so, pause the camera feed
while image_capture_flag:
pass
#print("UI Thread: Exit flag is " + str(ui_exit_flag))
success, img = camera.read()
if success:
for barcode in pyzbar.decode(img):
myData=barcode.data.decode('utf-8')
pts=barcode.polygon
if len(pts)>=4:
pts=np.array(pts,np.int32)
cv2.polylines(img,[pts],True,(255,0,255),6)
pts2=barcode.rect
cv2.putText(img,text=myData,org=(pts2[0],pts2[1]),fontFace=cv2.FONT_HERSHEY_SIMPLEX,fontScale=0.5,color=(0,244,0),thickness=2)
cv2.imshow('Press (Q) to close', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#else:
#print("Not showing live")
#print("Showing Live")
camera.release()
print("UI Thread: No longer showing live")