圖像標注繪制
繪制圖像檢測框
繪制圖像分割區域
代碼示例
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import json
from pathlib import Path
import cv2
if __name__ == "__main__":
"""opencv 在圖像上標注檢測 box 和文字 detect"""
img_dir = r"F:\data\imgs"
file_name = r"F:\data\json\site_my.txt"
blue = (255, 0, 0)
mark_font = cv2.FONT_HERSHEY_SCRIPT_COMPLEX
with open(file_name, mode="r", encoding="utf-8") as file_obj:
for i, data in enumerate(file_obj):
# JSON字符串轉py對象
json_str = json.loads(data)
img_nm = json_str["img_key"]
img_path = str(Path(img_dir).joinpath(img_nm))
print(img_path)
img = cv2.imread(img_path)
# 對圖像進行mark
for idx, mark_point in enumerate(json_str["ccle"]):
# list中所有數值類型轉換,且數據類型tuple
point = tuple(map(int, mark_point["ata"]))
category = mark_point["trs"]["ory"]
cv2.rectangle(img=img, pt1=point[0:2], pt2=point[2:4], color=blue, thickness=0)
cv2.putText(img=img, text=category, org=point[0:2], fontFace=mark_font, fontScale=0.5, color=(0, 0, 255))
cv2.imshow(winname="My_test_img", mat=img)
cv2.waitKey(delay=1000)
cv2.destroyWindow(winname="My_test_img")
output = str(Path(img_dir).joinpath("img_"+str(i)+".jpg"))
print(output)
cv2.imwrite(filename=output, img=img)
分割代碼示例
import os.path
import cv2
import numpy as np
img_dir = r"F:\data\train_seg"
img_path= os.path.join(img_dir,"Camera01.jpg")
mark_frame = cv2.imread(img_path).copy()
print(mark_frame.shape)
mark_frame_org = cv2.imread(img_path).copy()
item_parsers = [[330, 500], [600, 120], [760, 530], [470, 630], [300, 580]]
view_color = (110, 0, 255)
triangle = np.array(item_parsers, np.int32)
mask_frame = cv2.fillConvexPoly(mark_frame, triangle, view_color)
dst = cv2.addWeighted(mark_frame_org, .2, mask_frame, .5, 0)
cv2.imshow("my",dst)
cv2.waitKey(delay=0)
參考
python3 , opencv 在圖像上標注檢測 box 和文字https://blog.csdn.net/tutu96177/article/details/87783857