一般来说,我对opencv和python都很陌生。我想制作一个程序,用摄像机计算汽车数量。我已经做了这个程序,我已经找到了等高线,但问题是我不知道如何知道等高线在哪条车道上的确切位置。我已经用下面的油漆做了一个例子contours on a 4 lane road
在上图中,北面有一辆车,南面有两辆车,西面有三辆车,东面有两辆车。我想知道如何检测轮廓的位置。多谢各位
from picamera.array import PiRGBArray
from picamera import PiCamera
import picamera.array
import numpy as np
import time
import cv2
import RPi.GPIO as GPIO
import time
import sign2
GPIO.setmode(GPIO.BCM)
cam = PiCamera()
cam.resolution=(480,480)
cam.framerate=30
raw=PiRGBArray(cam, size=(480,480))
time.sleep(0.1)
colorLower = np.array([0,100,100])
colorUpper = np.array([179,255,255])
purplelow = np.array([125,100,100])
purpleup = np.array([136,255,255])
initvert = 0
inithoriz = 0
initverta = 0
inithoriza = 0
for frame in cam.capture_continuous(raw, format="bgr", use_video_port=True):
frame = frame.array
hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
purplemask = cv2.inRange(hsv,purplelow,purpleup)
mask = cv2.inRange(hsv,colorLower,colorUpper)
mask = cv2.blur(mask,(3,3))
mask= cv2.dilate(mask,None,iterations=5)
mask= cv2.erode(mask,None,iterations=1)
mask= cv2.dilate(mask,None,iterations=3)
purplemask = cv2.inRange(hsv,purplelow,purpleup)
purplemask = cv2.blur(purplemask,(3,3))
purplemask= cv2.dilate(purplemask,None,iterations=5)
purplemask= cv2.erode(purplemask,None,iterations=1)
purplemask= cv2.dilate(purplemask,None,iterations=3)
me,thresh = cv2.threshold(mask,127,255,cv2.THRESH_BINARY)
me,thresh2 = cv2.threshold(mask,127,255,cv2.THRESH_BINARY)
cnts = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)[-2]
center = None
cnts2 = cv2.findContours(thresh2,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)[-2]
center = None
vert = 0
horiz = 0
verta = 0
horiza = 0
找到轮廓线&;它们在代码中的质心添加了以下内容。质心列表存储在
centroids
相关问题 更多 >
编程相关推荐