2016-11-18 47 views
0

我有一個腳本,我使用滑動窗口來檢測圖片中的某些東西。在檢查圖像的每一部分後,我將其縮小並重新進行。如果我在縮小比例的圖像上創建了框,我如何獲得原始圖像中的框(x,y,w,h)座標?

如果我有檢測,我會返回邊界框的座標。 (x, y, width, height)

但是,如果我在縮小的圖像上檢測到,如何返回原始圖像上的「真實」座標?

這裏是我的代碼部分至今:

scaledNumber = 0 
detections = [] 
DOWNSCALE = 1.3 

for imageScaled in pyramid_gaussian(image, downscale=DOWNSCALE): 
    if imageScaled.shape[0] < MIN_WINDOW_SIZE[1] or imageScaled.shape[1] < MIN_WINDOW_SIZE[0]: 
     break 
    for (x1, y1, x2, y2, croppedImage) in slidingWindow(imageScaled, MIN_WINDOW_SIZE, WINDOW_STEP_SIZE): 
     if croppedImage.shape[0] != MIN_WINDOW_SIZE[1] or croppedImage.shape[1] != MIN_WINDOW_SIZE[0]: 
      continue 


     HERE I DO THE DETECTION WITH the croppedImage 

     detections.append((x1, y1, x1 + int(MIN_WINDOW_SIZE[0] * (DOWNSCALE ** scaledNumber)), 
            y1 + int(MIN_WINDOW_SIZE[1] * (DOWNSCALE ** scaledNumber)), croppedImage)) 


    scaledNumber += 1 
+0

只是高檔的座標,讓你縮放係數相乘。 – Noidea

+0

乘以因子:x,y,寬度,高度 – Micka

+0

謝謝各位! –

回答

0

謝謝你的意見!

這是我做到了,我真是很好的效果:

detections.append((int(x1 * DOWNSCALE ** scaledNumber), int(y1 * DOWNSCALE ** scaledNumber), 
            int(x2 * DOWNSCALE ** scaledNumber), int(y2 * DOWNSCALE ** scaledNumber), 
            croppedImage)) 
相關問題