python opencv根据坐标信息绘制矩形框

1.函数封装

'''
函数描述:对给定的图片和坐标信息在图片上标框,并在框的上方标注出该框的名称
函数参数:img_file_path=图片的绝对路径,new_img_file_path=保存后的绝对路径,points=[(str,[b0,b1,b2,b3])]
返回值:无返回值
注意事项:坐标[b0,b1,b2,b3]依次为左上角和右下角的坐标
'''

def draw_rectangle_by_point(img_file_path,new_img_file_path,points):
    image = cv2.imread(img_file_path)
    for item in points:
        print("当前字符:",item)
        point=item[1]
        first_point=(int(point[0])*2,int(point[1])*2)
        last_point=(int(point[2])*2,int(point[3])*2)

        # first_point = (point[0] * 2, point[1] * 2)
        # last_point = (point[2]* 2, point[3] * 2)
        print("左上角:",first_point)
        print("右下角:",last_point)
        cv2.rectangle(image, first_point, last_point, (0, 255, 0), 1)#在图片上进行绘制框
        cv2.putText(image, item[0], first_point, cv2.FONT_HERSHEY_COMPLEX, fontScale=0.5, color=(255,0,0), thickness=1)#在矩形框上方绘制该框的名称

    cv2.imwrite(new_img_file_path, image)

2.测试样例

if __name__ == '__main__':
    #points=[('8F.', [66.72106971740723, 193.4539794921875, 80.52160511016845, 207.30389404296875]), ('Zhongshan', [241.5278513590495, 193.4539794921875, 282.9294575373332, 207.30389404296875])]
    points=[('No. 18', [89.72196203867594, 193.4539794921875, 117.3230328241984, 207.30389404296875]), 
            ('Zhongshan Dist.', [241.5278513590495, 193.4539794921875, 310.5305283228556, 207.30389404296875])]
    draw_rectangle_by_point(r'E:\wm_workspace\day2_2_24\images\16.pdf.png',"new.jpg",points)

3.结果展示

python opencv根据坐标信息绘制矩形框_第1张图片

你可能感兴趣的:(图像处理,python,opencv,计算机视觉)