【安老师行空板Tips】OpenCV+摄像头全屏显示
先不废话,直接上代码。 可以把“screen_rotation = True”改成“screen_rotation = False”试试看竖屏模式。import cv2
#False:不旋转屏幕(竖屏显示,上下会有白边)
#True:旋转屏幕(横屏显示)
screen_rotation = True
cap = cv2.VideoCapture(0) #设置摄像头编号,如果只插了一个USB摄像头,基本上都是0
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320)#设置摄像头图像宽度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) #设置摄像头图像高度
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) #设置OpenCV内部的图像缓存,可以极大提高图像的实时性。
cv2.namedWindow('camera',cv2.WND_PROP_FULLSCREEN) #窗口全屏
cv2.setWindowProperty('camera', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) #窗口全屏
while cap.isOpened():
success, image = cap.read()
if not success:
print("Ignoring empty camera frame.")
continue
if screen_rotation: #是否要旋转屏幕
image = cv2.rotate(image, cv2.ROTATE_90_COUNTERCLOCKWISE) #旋转屏幕
cv2.imshow('camera', image)
if cv2.waitKey(5) & 0xFF == 27:
break
cap.release()
行空板的屏幕是真得香,只要用过都知道 :)。 和其他的Linux主控板不同,小巧的屏幕的在使用上需要一点技巧。
我们知道行空板屏幕的分辨率是240*320,为竖屏显示。由于OpenCV显示窗口会默认加上一些菜单,正是这些菜单影响在小分辨率上进行缩放,导致了普通使用opencv的方法没有办法做到左上角对齐。其实OpenCV其实内置了非常多的功能,来处理小屏幕的问题是小菜一碟,只要设置一下窗口全屏就可以了,OpenCV还能自己根据屏幕大小自动等比缩放图片,非常的方便。比如我们可以看到“screen_rotation = False”时的图片大小是320*240的,但由于是全屏模式,图片自动缩小到了240*180并留出了上下两条白边。
如果我们需要横屏显示的话,只要在imshow之前用cv.rotate进行旋转就可以了,我这里加了一个变量screen_rotation,就可以选择是否进行横屏显示了。
另外,提一句,这个非常有用:
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)
由于OpenCV内部是有个摄像头图像缓存的,大概存了10几张过去摄像头的图像。如果你的算法跑的比较慢,那你使用的可能是10张之前的图像,会造成很大的延时。这里把buffer设置成1,大大减小了跑图像算法的延时。
j简单、粗暴、有效,哈哈哈哈 can't open camera by index 请问如何加载摄像头呢? gada888 发表于 2022-4-16 07:21
can't open camera by index
这里可以改成 1 或者 -1试试看:
cap = cv2.VideoCapture(-1)
也有可能usb摄像头不是linux免驱的。 用ssh登陆以后用命令行看看是不是有摄像头设备:
ls /dev/video*
如果有设备应该会有如下的显示
root@unihiker:~# ls /dev/video*
/dev/video0/dev/video1 好方法,学到了,简单让图片全屏只需要加两条语句就好了
学到了,谢谢楼主的分享 如何更改图像大小?不全屏显示图像,让图像显示到自己想要的坐标?谢谢! 666 很不错很不错很不错 我照着老师的代码用积木实现了一下,方便我们初学着使用。不过要先在扩展里添加opencv功能
大家可以参考一下
页:
[1]