使用Python 2.7和OpenCV 3检查停车位是否已满
我试图将一个自动停车场改造成一个停车场,如果有蓝线,则视为空位,如果没有,则视为空位: 我尝试了很多东西,从基本颜色检测到边缘检测,甚至是特征匹配: 我当前使用的代码:使用Python 2.7和OpenCV 3检查停车位是否已满,python,opencv3.0,Python,Opencv3.0,我试图将一个自动停车场改造成一个停车场,如果有蓝线,则视为空位,如果没有,则视为空位: 我尝试了很多东西,从基本颜色检测到边缘检测,甚至是特征匹配: 我当前使用的代码: import cv2 import numpy as np from picamera import PiCamera from picamera.array import PiRGBArray img = cv2.imread("CAT2.png") img = cv2.cvtColor(img, cv2.COLOR_BG
import cv2
import numpy as np
from picamera import PiCamera
from picamera.array import PiRGBArray
img = cv2.imread("CAT2.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
camera = PiCamera()
camera.resolution = (320, 240)
rawCapture = PiRGBArray(camera, size=(320, 240))
sift = cv2.xfeatures2d.SIFT_create()
kp_image, desc_image = sift.detectAndCompute(img, None)
index_params = dict(algorithm=0, trees=5)
search_params = dict()
flann = cv2.FlannBasedMatcher(index_params, search_params)
for f in camera.capture_continuous(rawCapture, format="bgr",use_video_port = True):
frame = rawCapture.array
cropped = frame[0:80, 0:320]
grayframe = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY)
kp_grayframe, desc_grayframe = sift.detectAndCompute(grayframe, None)
matches = flann.knnMatch(desc_image, desc_grayframe, k=2)
good_points = []
for m, n in matches:
if m.distance < 0.5*n.distance:
good_points.append(m)
img3 = cv2.drawMatches(img, kp_image, grayframe, kp_grayframe, good_points, grayframe)
cv2.imshow("Image", img)
cv2.imshow("grayFrame", grayframe)
cv2.imshow("img3", img3)
key = cv2.waitKey(1)
if key == 27:
break
rawCapture.truncate(0)
cv2.destroyAllWindows()
导入cv2
将numpy作为np导入
从picamera进口picamera
从picamera.array导入PiRGBArray
img=cv2.imread(“CAT2.png”)
img=cv2.cvt颜色(img,cv2.COLOR\u bgr2灰色)
照相机=皮卡梅拉()
相机分辨率=(320240)
rawCapture=PiRGBArray(摄像机,尺寸=(320240))
sift=cv2.xfeature2d.sift_create()
kp_image,desc_image=sift.detectAndCompute(img,无)
索引参数=dict(算法=0,树=5)
搜索参数=dict()
flann=cv2.FlannBasedMatcher(索引参数、搜索参数)
对于摄像机中的f.capture\u continuous(rawCapture,format=“bgr”,使用\u video\u port=True):
frame=rawCapture.array
裁剪=帧[0:80,0:320]
grayframe=cv2.CVT颜色(裁剪,cv2.COLOR\u BGR2GRAY)
kp_grayframe,desc_grayframe=sift.detectAndCompute(grayframe,无)
matches=flann.knMatch(描述图像,描述灰度帧,k=2)
好分数=[]
对于匹配中的m,n:
如果m.距离<0.5*n.距离:
好的分数。追加(m)
img3=cv2.绘图匹配(img、kp_图像、灰色帧、kp_灰色帧、良好点、灰色帧)
cv2.imshow(“图像”,img)
cv2.imshow(“灰色框架”,灰色框架)
cv2.imshow(“img3”,img3)
key=cv2.waitKey(1)
如果键==27:
打破
rawCapture.truncate(0)
cv2.destroyAllWindows()
然而,我尝试什么都不管用!我希望你能解释一下我是如何做到的,而不是为我做的。Hi@huvarda,到目前为止你做了什么?你能发布你的代码吗?这是我的代码。你是想检测一条蓝线,还是想检测一辆车,然后画一条蓝线?我想检测一条蓝线我想我在功能检测方面有点过火了,因为没有那么多独特的功能