为什么要调整边缘检测的大小
注:灵魂画师上线,我把整个游戏界面分为红色区域和蓝色区域,在边缘检测中我们希望只看红色区域的数据集,而蓝色区域的数据集(电线杆等)我们对其并不关心,于是要设置一个mask(这个mask的大小取决于车型,可以自己调整),只对我们红色区域进行边缘检测
对比展示
mask之前
mask之后
代码
注:传入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