无人驾驶 OpenCV (8) 真正开始无人驾驶
2019-08-18 本文已影响1人
zidea
图
无人驾驶 OpenCV (8) 真正开始无人驾驶
import cv2
def process_frame(img):
print(img.shape)
if __name__ == "__main__":
cap = cv2.VideoCapture("videos/test.mp4")
while cap.isOpened():
ret, frame = cap.read()
if ret == True:
process_frame(frame)
else:
break
(1080, 1920, 3)
import cv2
import sdl2
import sdl2.ext
# import pygame
sdl2.ext.init()
W = 1920//2
H = 1080//2
window = sdl2.ext.Window("hello zidea",size=(W,H),position=(-500,-500))
window.show()
初始化 sdl 程序。
然后创建一个 sdl 窗口,设置标题为 hello zidea, 随后参数设置宽度和高度,position 设置窗口在显示器显示的位置。
def process_frame(img):
img = cv2.resize(img,(W,H))
events = sdl2.ext.get_events()
# cv2.imshow('image',img)
for event in events:
if event.type == sdl2.SDL_QUIT:
exit(0)
events = sdl2.ext.get_events()
获取 sdl2 事件,当事件类型为 SDL_QUIT 则退出应用。
surf = sdl2.ext.pixels3d(self.window.get_surface())
surf[:,:,0:3] = img.swapaxes(0,1)
window.refresh()
首先从词义上得知swap是“交换”的意思,swapaxes(a,b)函数则应该是a,b两个轴编号进行位置互换后数组的变化。
获取 sdl 窗口渲染方式的表面,然后通过将图像数据赋值给 surf 来实现将图像渲染到 sdl 上。
if __name__ == "__main__":
cap = cv2.VideoCapture("videos/test.mp4")
while cap.isOpened():
ret, frame = cap.read()
if ret == True:
process_frame(frame)
else:
break
george hotz感谢 george hotz 的分享
无人驾驶 OpenCV (8) 真正开始无人驾驶