Рисование масштабированной сетки с использованием openCV и python - PullRequest
0 голосов
/ 18 сентября 2018

То, что я хочу сделать, это нарисовать сетку на изображении, которое имеет меньшие квадраты вверху и более крупные - снизу. Я потерян на том, как сделать это все же. Я понял, как нарисовать сетку на изображении, используя open cv, но не знаю, как правильно повернуть его, чтобы получить желаемые результаты.

Для чего я буду использовать это, чтобы найти точку ограничивающего прямоугольника для обнаруженного объекта. Мне понадобится меньшая ограничительная рамка вверху и большая ближе к нижней части изображения.

Вот что я хочу сделать: enter image description here

Но я не могу понять, как получить кривые в коде. Это то, что я до сих пор: enter image description here

И это код, который я использую.

'''
#This method draws simple grid overthe image based on the passed step
#The pxstep controls the size of the grid
'''
def drawBasicGrid(image, pxstep, midX, midY):
    x = pxstep
    y = pxstep
    #Draw all x lines
    while x < img.shape[1]:
        cv2.line(img, (x, 0), (x, img.shape[0]), color=(255, 0, 255), thickness=1)
        x += pxstep

    while y < img.shape[0]:
        cv2.line(img, (0, y), (img.shape[1], y), color=(255, 0, 255),thickness=1)
        y += pxstep

Это рисует основную сетку. и это создает ограничивающие рамки, которые я использую для обнаружения ограничивающих точек обнаруженного объекта.

def makeBoundingBox(h,w, step):
    #BBox is 100*100 square or step which is defied
    y = 0
    bbox = []
    while y < h:
        #print("Y value", y)
        x=0
        while x < w:
            #print("X Value", x)
            bbox.append([(x,y), (x+step, y+step)])
            x += step
        y += step

    return bbox

И вот как я его использую.

#Prepare Images
img = cv2.imread(image)
#img = imutils.resize(img, width=300)
#gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
(H,W) = img.shape[:2]
#Create bounding boxes for the image
'''
#Creates the boxes for people detection 
#It will look for which bounding boxes the person is in and then 
#Draw a box around their feet
'''
#People Detection
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)),0.007843,(300, 300), 127.5)
net.setInput(blob)
detections = net.forward()
'''
#Get the center point of the image
'''
midY = H//2
midX = W//2
print("Middle Y pixel", midY)
#Draw center line
cv2.line(img, (0, midY), (W, midY), color=green, thickness=2)
cv2.line(img, (midX, 0), (midX, H), color=green, thickness=2)

#Visual grid drawn
drawBasicGrid(img, step, midX,midY)
bbox = makeBoundingBox(H, W, step) #Used for finding where the endx and startx BBOX  points are

Любая помощь в этом будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...