opencv停车场车位实战

通过学习唐宇迪老师的opencv停车场车位实战,在这里本人来汇总一下该项目的实现步骤:
opencv停车场车位实战_第1张图片 实际数据中,上面的图像为动态的实时监控录像,我们需要利用opencv的利用,形成能够实时的记录有空缺的停车位,并且能够为新来的车辆指引其最近的停车位置。


```python
if __name__ == '__main__':
    test_images = [plt.imread(path) for path in glob.glob('test_images/*.jpg')]
    weights_path = 'car1.h5'
    video_name = 'parking_video.mp4'
    class_dictionary = {}
    class_dictionary[0] = 'empty'
    class_dictionary[1] = 'occupied'
    park = Parking()
    park.show_images(test_images)
    final_spot_dict = img_process(test_images,park)
    model = keras_model(weights_path)
    img_test(test_images,final_spot_dict,model,class_dictionary)
    video_test(video_name,final_spot_dict,model,class_dictionary)

在上述的主代码中:

  • test_images:为我们输入的数据
  • weights_path:为我们训练的模型,“car1.h5”为我们训练完得到的模型结果,以及训练参数权重,用于之后判断车位是否有被占
  • video_name:为输入的数据,用于实时的监控运作
  • class_dictionary:根据字典,返回车位是否被占
  • img_process:对图像处理的代码

因此,在我们的实际操作中,我们需要将图像经过复杂的处理才能够好的进行图像识别。

  1. 首先,将图像进行二值化可以更加方便的进行后期的处理def select_rgb_white_yellow(self,image):
  2. 对图像进行边缘检测def detect_edges(opencv可以检测该有的边界,但效果并不能很完美)
  3. 整个图片存在不需要的信息,因此我们需要设定的范围进行切割,仅仅绘制出我们需要的停车场图像(一共为6个点)
  4. 将之前的边缘检测图像加入到特定的图片信息中
  5. 检测每一横的停车线的存在,在图像中进行绘制
  6. 检测每一列的位置,并且标记出每一列所存在的停车位def identify_blocks(self,image, lines, make_copy=True):
  7. 通过对划分的列以及运用draw_parking()中的微调,从而获取规范实际的停车位信息。
  8. 图片提取出每个停车位的图像,从而可以得到空以及占据的分类

之后利用Keras进行是否有车在停车位的模型训练,从而进行车位判定的训练:
opencv停车场车位实战_第2张图片

具体的代码实现可以参照 opencv-keras停车位识别

你可能感兴趣的:(opencv停车场车位实战)