matplotlib中plt用法實例


 

 

import torch
from models.models import Model
import cv2
from PIL import Image
import numpy as np

from matplotlib.animation import FFMpegWriter
import time
import matplotlib.pyplot as plt


from torchvision.transforms import functional


exp_name = './xxxx_results'
dataRoot = 'xxxx.mp4'
model_path = './checkpoint_best.pth'


def pre_image(image):
    image = Image.fromarray(cv2.cvtColor(image,cv2.COLOR_BGR2RGB))
    input_image = image.copy()
    # image.show()
    height, width = image.size[1], image.size[0]
    height = round(height / 16) * 16
    width = round(width / 16) * 16
    image = image.resize((width, height), Image.BILINEAR)

    image = functional.to_tensor(image)
    image = functional.normalize(image, [0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    return input_image,torch.unsqueeze(image,0)


if __name__ == '__main__':

    device = torch.device('cuda:0')

    # load model
    model=Model()
    checkpoint = torch.load(model_path)
    model.load_state_dict(checkpoint['model'])

    model.cuda()
    model.eval()

    # input video
    video = cv2.VideoCapture(dataRoot)
    fps = video.get(cv2.CAP_PROP_FPS)
    print(fps)
    frameCount = video.get(cv2.CAP_PROP_FRAME_COUNT)
    print(frameCount)
    size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)), int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)))


    # metadata = dict(title='Video Test', artist='Matplotlib', comment='Movie support!')
    # writer = FFMpegWriter(fps=25, metadata=metadata)

        # videoWriter = cv2.VideoWriter('trans.mp4', cv2.VideoWriter_fourcc(*'MP4V'), fps, size)
    success, frame = video.read()
    index = 1

    figure = plt.figure()
    while success:
        # time1=time.time()
        src_image,frame = pre_image(frame)
        images = frame.to(device)

        # time1 = time.time()


        # ground truth
        # gt_path = dataRoot + '/den/' + filename_no_ext + '.csv'

        # predict
        dense_map,atten_map = model(images)
        # test = time.time() - time1

        dense_map = dense_map.cpu().data.numpy()[0,0,:,:]
        # test=time.time()-time1

        dense_pred_count = np.sum(dense_map)
        dense_map = dense_map/np.max(dense_map+1e-20)

        # cv2.imshow("image", dense_map)
        # cv2.waitKey(0)


        plt.subplot(121)
        plt.imshow(src_image)
        # plt.title('original image')
        plt.axis('off')

        plt.subplot(122)
        plt.imshow(dense_map)
        # plt.title('dense map')
        plt.text(25, 25, 'pred crowd count:%.4f ' % dense_pred_count, fontdict={'size': 10, 'color': 'red'})
        plt.axis('off')

        plt.tight_layout(pad=0.3, w_pad=0, h_pad=1)

        # anni=animation.FuncAnimation(fig, animate, init_func=init,frames=200, interval=20, blit=True)
        # anim.save('sin.gif', fps=75, writer='imagemagick')
        plt.savefig(exp_name + '/'+ str('%05d' % index) + '_' + str(int(dense_pred_count)) + '.png', bbox_inches='tight', pad_inches=0, dpi=150)

        # plt.show()
        plt.clf()

        success, frame = video.read()
        index += 1

    video.release()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM