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

为什么要调整边缘检测的大小

注:灵魂画师上线,我把整个游戏界面分为红色区域和蓝色区域,在边缘检测中我们希望只看红色区域的数据集,而蓝色区域的数据集(电线杆等)我们对其并不关心,于是要设置一个mask(这个mask的大小取决于车型,可以自己调整),只对我们红色区域进行边缘检测

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

对比展示

mask之前

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

mask之后

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

代码

注:传入img,顶点的列表,返回被mask后的img

顶点的列表:即规定红色区域的各个顶点的位置

def roi(img, vertices):
    mask = np.zeros_like(img)
    cv2.fillPoly(mask, vertices, 255)
    masked = cv2.bitwise_and(img, mask)
    return masked

修改convert_To_gray()函数

def convert_To_gray(image):
    # to gray
    gray_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # canny
    gray_img = cv2.Canny(gray_img, threshold1=100, threshold2=200)
    # mask img 只取红色区域的数据
    vertices = np.array([ [10,500], [10,300], [300,200], [500,200], [800,300], [800,500] ]) # 修改了这里
    gray_img = roi(gray_img, [vertices]) # 修改了这里
    return gray_img
上一篇:图像处理中的OTSU最大化内间方差算法


下一篇:opencv 实现边缘检测