1.实现的思路
(1)首先使用一个处理画框的程序,将图片中的有车和无车的停车位给画出来,并且保存坐标(如果画错了,将鼠标移至要删除的框中,右击鼠标,即可删除);
| 1 2 3 4 5 6 7 8 9 10 11 |
#定义回调函数 def mouseClick(events,x,y,flags,params): #按下鼠标左键,将点击的坐标(x,y)保存到position列表中 if (events&cv2.EVENT_LBUTTONDOWN==cv2.EVENT_LBUTTONDOWN): position.append((x,y)) #按下鼠标右键时,移除选中的框 if (events&cv2.EVENT_RBUTTONDOWN==cv2.EVENT_RBUTTONDOWN): for i,pos in enumerate(position): (x1,y1)=pos if (x1<x<x1+img_width and y1<y<y1+img_height): position.pop(i) |
(2)画好之后,关闭窗口,即可看到已经保存好坐标的文件,下次再运行程序时,不用再画框;程序会读出当前文件,将之前保存好的坐标加载出画出框。
| 1 2 3 4 5 6 7 |
#首先查看文件是否已经包含了CarParkPos文件 try: with open('CarParkPos','rb') as fp: position=pickle.load(fp) except: # 存储所有停车位的坐标列表 position=[] |
(3)主程序的思路
将摄像头读取的图片进行处理
Opencv基础知识点:
Python Opencv中基础的知识点_python_脚本之家
高斯去噪:
python Gabor滤波器讲解_python_脚本之家
局部二值化:
详解Python+OpenCV实现图像二值化_python_脚本之家
中值滤波:
python Gabor滤波器讲解_python_脚本之家
Opencv中获取卷积核:
Python Opencv中获取卷积核的实现代码_python_脚本之家
腐蚀操作:
OpenCV-Python实现腐蚀与膨胀的实例_python_脚本之家
| 1 2 3 4 5 6 7 8 9 10 11 |
#转换为灰度图 gray=cv2.cvtColor(src=frame,code=cv2.COLOR_BGR2GRAY) #高斯去噪 gauss=cv2.GaussianBlur(src=gray,ksize=(3,3),sigmaX=0) #图像二值化处理 thresh=cv2.adaptiveThreshold(src=gauss,maxValue=255,adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C, thresholdType=cv2.THRESH_BINARY_INV,blockSize=21,C=16) # 中值滤波操作 |