bboxを画像に反映できません、どのような解決策があるでしょうか?
解決したいこと
annotationのbboxを画像に反映したいのですが、いざcv2を使って反映してみると全く違う場所に違う大きさで出力されてしまいます。どうしたらよいでしょうか?
発生している問題・エラー
該当するソースコード
例)
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