通过给定一个图片的路径,展示子图片和带有情感强度的文本信息。
  b5vpn9flcpYe 2023年11月30日 25 0


显示一张子图片,并用文本信息作为标题

Nov24,星期五

审查我的26日.ipynb的记录本的代码,我决定对他们进行重构。放到imagebox.py文件中。

  1. show_ith_box函数,可以参考save_ith_box函数


Nov,29,星期三

这之间,我被心理学书籍《被讨厌的勇气》和《卡片笔记写作法》吸引,因此这中间的五天,我并没有处理我的代码积累工作。写代码,与计算机亲密交互,是不是我热爱的事情呢?今天读到一本书,说,只需要做好事业,不能只为了赚钱。我们的技能能为别人,和社会带来什么贡献呢?

这是个需要最近思考和实践的问题。


show_img_ith_box,在重构的过程中,我添加了这个函数。

show_ith_box,把这个函数的print修改为logger.info

cv2_show_img,将这以上的三个函数,放入imagebox.py文件中。

外部只需要调用show_img_ith_box就可以显示子图片,和提取的文本信息。


#Nov,29

def cv2_show_img(cv2img, head_str ='test'):
    '''
    cv2img : what is cv2.imread return array
    '''
    import cv2
    cv2.imshow(head_str,cv2img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()



def show_ith_box(im, box_list,  i = 0):
    '''
    display one of 10 box in a big picture
    im: 被cv2处理过的图片
    box_list: 预训练模型提取的坐标和文本信息
    i:显示目标框的索引
    '''
    array , att_str= box_list[i]
    logger.info(array)
    logger.info(att_str)

    x1,y1,x2,y2 = array
    x1,y1,x2,y2 = int(x1),int(y1),int(x2),int(y2)
    logger.info('convert to int')

    logger.info('display img by cv2')

    import cv2
    # %matplotlib inline
    # im = cv2.imread(im_file)
    logger.info('cv2.imread return : ')
    logger.info(type(im))
    logger.info('display cv2 to jupyter:')
    
    patch_img = im[y1:y2,x1:x2]
    logger.info(patch_img.shape)
    cv2_show_img(patch_img, att_str)
    logger.info('success')
    
    
def show_img_ith_box(im_file,i=0):
    '''
    将im_file图片的第i个目标框显示出来
    '''
    import cv2
    im = cv2.imread(im_file)
    # from imagebox import file_2_10_boxes_list
    box_list = file_2_10_boxes_list(im_file)
    
    show_ith_box(im, box_list, i)


在目标图片上绘制方框

Nov,29

继续审查剩余的代码,进行整理。

设计一个函数,show_10_box_in_a_img,将10个方框都展示出来。



from configs import dataset_path,img0,img1
im_file = dataset_path + img0
from imagebox import show_10_box_in_a_img
show_10_box_in_a_img(im_file)    



imagebox.py


#Nov,29

#设计一个函数,将10个方框都展示出来。
import matplotlib.pyplot as plt
# set display defaults
plt.rcParams['figure.figsize'] = (12, 9)        # small images
plt.rcParams['image.interpolation'] = 'nearest'  # don't interpolate: show square pixels
plt.rcParams['image.cmap'] = 'gray'  # use grayscale output rather than a (potentially misleading) color heatmap

def show_10_box_in_a_img(im_file):
    '''
    设计一个函数,将10个方框都展示出来。
    im_file:只需要传入一个路径
    使用pyplot绘制
    1.
    '''
    # 1先绘制图片
    im = plt.imread(im_file)
    plt.imshow(im)
    
    # 2 绘制方框,需要box_list函数
    # from imagebox import file_2_10_boxes_list
    box_list = file_2_10_boxes_list(im_file)
    loop = len(box_list)
    # print('loop : ',loop)
    logger.info(f'loop : {loop}')

    # 3 绘制
    for i in range(loop):
        # i=0
        array , att_str= box_list[i]
        # print(array)
        # print(att_str)

        bbox = array
        # 绘制盒子
        plt.gca().add_patch(
                plt.Rectangle((bbox[0], bbox[1]),
                              bbox[2] - bbox[0],
                              bbox[3] - bbox[1], fill=False,
                              edgecolor='red', linewidth=2, alpha=0.5)
                    )
        # 文本
        cls = att_str
        plt.gca().text(bbox[0], bbox[1] - 2,
                        '%s' % (cls),
                        bbox=dict(facecolor='blue', alpha=0.5),
                        fontsize=10, color='white')
    
    plt.show()
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月30日 0

暂无评论

b5vpn9flcpYe