Ryu0907
@Ryu0907 (隆太郎 古谷)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

bboxを画像に反映できません、どのような解決策があるでしょうか?

解決したいこと

annotationのbboxを画像に反映したいのですが、いざcv2を使って反映してみると全く違う場所に違う大きさで出力されてしまいます。どうしたらよいでしょうか?

発生している問題・エラー

Screen Shot 2020-10-21 at 7.33.22 PM.png

該当するソースコード

例)

import torch
import torchvision
from torch.utils.data import Dataset, DataLoader
import numpy as np
import os
import json
from matplotlib.transforms import Bbox
import cv2
import math
from PIL import Image
from skimage import io
from matplotlib.pyplot import plot as plt
import matplotlib.image as mpimg
import base64
from pycocotools.coco import COCO
import pprint



TRAIN_DENSE_PATH = '/Users/ryutaro/PycharmProjects/tiny_person_detection/tiny/tiny_set/train/labeled_dense_images'
ANNO_PATH = '/Users/ryutaro/PycharmProjects/tiny_person_detection/tiny/tiny_set/annotations/tiny_set_train_with_dense.json'

"""  
with open (ANNO_PATH, 'r') as json_file:
    tiny = json.load(json_file)
    #print(tiny.keys())
    images_list = tiny['images']
    image_0 = images_list[0]
    print(image_0)
    anno = tiny["annotations"]
    #print(anno)
    anno_0 = anno[0]
    print(anno_0)
    bbox0 = anno_0['bbox']
    print(bbox0)
    #coco format [x,y,width,height]
"""
with open(ANNO_PATH, 'r') as f:
    tiny = json.load(f)

print(tiny.keys())

images_list = tiny['images']
print(images_list[0])

anno_list = tiny['annotations']
anno_0 = anno_list[0]
print(anno_0)

image_id = anno_0['image_id']
bbox0 = anno_0['bbox']
print(bbox0)
xmin = int(bbox0[0])
ymin = int(bbox0[1])
xmax = xmin + int(bbox0[2])
ymax = ymin + int(bbox0[3])

tiny_image0 = cv2.imread( '/Users/ryutaro/PycharmProjects/tiny_person_detection/tiny/tiny_set/train/labeled_images/bb_V0032_I0001640.jpg')


cv2.rectangle(tiny_image0, (xmin, ymin), (xmax, ymax), (255, 0, 0), 2)
cv2.imshow('as', tiny_image0)
cv2.waitKey(0)

自分で試したこと

xmin,max,h,wが間違っているのかなと思い色々試したのですが。どれもうまく出力されませんでした。
ちなみに画像中心の小さな人に対して反映したいのですが、結果として画像右上の何もない空間に反映されました

0

1Answer

cv2.rectangleに渡している座標(xmin、ymin、xmax、ymax)が正しいかprintで確認した方が良いと思います。

1Like

Comments

  1. @Ryu0907

    Questioner

    解決しました、アドバイスありがとうございます!

Your answer might help someone💌