將COCO2017標註檔案中的bbox顯示在圖片上
阿新 • • 發佈:2018-11-27
from pycocotools.coco import COCO import cv2 import pandas as pd def showNimages(imageidFile, annFile, imageFile, resultFile): """ :param imageidFile: 要檢視的圖片imageid,儲存一列在csv檔案裡 (目前設計的imageid需要為6位數,如果少於6位數,可以在前面加多個0) :param annFile:使用的標註檔案 :param imageFile:要讀取的image所在資料夾 :param resultFile:畫了標註之後的image儲存資料夾 :return: """ data = pd.read_csv(imageidFile) list = data.values.tolist() image_id = [] # 儲存的是要提取圖片id for i in range(len(list)): image_id.append(list[i][0]) print(image_id) print(len(image_id)) coco = COCO(annFile) for i in range(len(image_id)): image = cv2.imread(imageFile + '000000' + str(image_id[i]) + '.jpg') annIds = coco.getAnnIds(imgIds=image_id[i], iscrowd=None) anns = coco.loadAnns(annIds) for n in range(len(anns)): x, y, w, h = anns[n]['bbox'] x, y, w, h = int(x), int(y), int(w), int(h) # print(x, y, w, h) cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255)) cv2.imwrite(resultFile + '000000' + str(image_id[i]) + 'result.png', image) print("生成圖片存在{}".format(resultFile))
函式使用方法
if __name__ == "__main__":
imageidFile = '/Desktop/myimage_id.csv'
annFile = 'instances_val2017.json'
imageFile = '/Users/Desktop/annotations/val2017/'
resultFile = '/Users/Desktop/image/'
注意看imageidFile裡面的資料格式:目前要求是6位,可以自己調整一下程式
效果如下