基于图像处理和tensorflow实现GTA5的车辆自动驾驶——第三节边缘检测

代码已放到码云

https://gitee.com/photographer_adam/Based-on-image-processing-and-tensorflow-to-realize-GTA5-vehicle-automatic-driving

为什么要边缘检测

  1. 通过边缘化后获取道路的边缘线更方便

效果展示

注:

  1. 游戏内可以按V键进行视角切换
  2. 建议游戏改成引擎盖视角,不然是驾驶室视角。流程:设置->显示->引擎盖视角打开

代码

def convert_To_gray(image):
    gray_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    gray_img = cv2.Canny(gray_img, threshold1=100, threshold2=200)
    return gray_img
# 注:输入原始图像,先将其转化为灰度图像,通过Canny()进行边缘检测,Canny()方法参数如下:
# Parameters
# image	8-bit input image.
# edges	output edge map; single channels 8-bit image, which has the same size as image .
# threshold1	first threshold for the hysteresis procedure.
# threshold2	second threshold for the hysteresis procedure.
# apertureSize	aperture size for the Sobel operator.
# L2gradient	a flag, indicating whether a more accurate L2 norm =(dI/dx)2+(dI/dy)2−−−−−−−−−−−−−−−−√ should be used to calculate the # image gradient magnitude ( L2gradient=true ), or whether the default L1 norm =|dI/dx|+|dI/dy| is enough ( L2gradient=false ).

代码2:对边缘检测后的图片进行展示

def screen_record():
    last_time = time.time()
    while True:
        # 800x600 windowed mode for GTA 5, at the top left position of your main screen.
        # 40 px accounts for title bar. 
        printscreen = np.array(ImageGrab.grab(bbox=(0, 40, 800, 640)))
        print('loop took {} seconds'.format(time.time() - last_time))
        last_time = time.time()
        gray_img = convert_To_gray(printscreen) # 修改了这里
        cv2.imshow('window', gray_img) # 修改了这里
        # cv2.imshow('window', cv2.cvtColor(printscreen, cv2.COLOR_BGR2RGB))
        if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break
posted @ 2020-12-16 11:53  Adam_lxd  阅读(443)  评论(0编辑  收藏  举报