То, что я хочу сделать, это нарисовать сетку на изображении, которое имеет меньшие квадраты вверху и более крупные - снизу. Я потерян на том, как сделать это все же. Я понял, как нарисовать сетку на изображении, используя open cv, но не знаю, как правильно повернуть его, чтобы получить желаемые результаты.
Для чего я буду использовать это, чтобы найти точку ограничивающего прямоугольника для обнаруженного объекта. Мне понадобится меньшая ограничительная рамка вверху и большая ближе к нижней части изображения.
Вот что я хочу сделать:
Но я не могу понять, как получить кривые в коде.
Это то, что я до сих пор:
И это код, который я использую.
'''
#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
Любая помощь в этом будет оценена.