簡體   English   中英

pyplot axes標題沒有顯示

[英]pyplot axes title not showing

我已經編寫了這個代碼來檢查對象邊界框但是當我給axes title時,它沒有顯示出來。 (我打算把文件號作為標題)。

#!/home/ckim/anaconda2/bin/python
#%pylab
import os.path as osp
import sys
import cv2
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as patches

def add_path(path):
    if path not in sys.path:
        sys.path.insert(0, path)

def move_figure(f, x, y):
    backend = matplotlib.get_backend()
    f.canvas.manager.window.move(x,y)
    plt.show()

# Add lib to PYTHONPATH
lib_path = osp.join('/home/ckim/Neuro/py-faster-rcnn/', 'lib')
add_path(lib_path)

import datasets
import datasets.pascal_voc as pv

#plt.ion()
fig, ax = plt.subplots(figsize=(8,8))
im = cv2.imread(osp.join('/home/ckim/Neuro/py-faster-rcnn/data/VOCdevkit2007/VOC2007/JPEGImages/', '{0:06d}'.format(eval(sys.argv[1])) + '.jpg'))
#im = cv2.imread(osp.join('000005.jpg'))
im = im[:, :, (2, 1, 0)]
ax.imshow(im, aspect='equal')
#res = pv._load_pascal_annotation(sys.argv[1])
d = datasets.pascal_voc('trainval', '2007')
res = d._load_pascal_annotation('{0:06d}'.format(eval(sys.argv[1])))

#        return {'boxes' : boxes,
#                'gt_classes': gt_classes,
#                'gt_overlaps' : overlaps,
#                'flipped' : False}

for i in range(len(res['boxes'])):
    x1 = res['boxes'][i][0]
    y1 = res['boxes'][i][1]
    x2 = res['boxes'][i][2]
    y2 = res['boxes'][i][3]
    ax.add_patch(patches.Rectangle((x1,y1), x2-x1, y2-y1, fill=False, edgecolor='red', linewidth=1.5))
    ax.text(x1, y1 - 5, '{:s}'.format(d._classes[res['gt_classes'][i]]), \
        bbox=dict(facecolor='blue', alpha=0.5), fontsize=14, color='white')
#thismanager = get_current_fig_manager()
#thismanager.window.SetPosition((500, 0))
#thismanager.window.wm_geometry("+500+0")
move_figure(fig, 500, 500)
#fig.show()
#fig.suptitle("Title x")
ax.set_title("Title x")
plt.pause(0)

在此輸入圖像描述 為了測試問題是什么,我將代碼縮減到了下面,但這個刪節版本適用於圖形圖(案例1)和圖像顯示(案例2)。 我找不到上面代碼的區別。 誰能告訴我上面代碼出了什么問題? (關於標題現在顯示)

#!/home/ckim/anaconda2/bin/python

import cv2
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(8,8))

# case 1 : plot
#ax.plot([1,2,3,4],[1,4,9,16])

# case 2 : image display
im = cv2.imread('000005.jpg')
im = im[:, :, (2, 1, 0)]
ax.imshow(im, aspect='equal')

ax.set_title("Title x")
plt.pause(0)

在此輸入圖像描述

move_figure調用了plt.show() ,這意味着顯示了該圖。 由於這是一個阻塞命令 ,因此在關閉此數字之前不會再運行任何代碼。 結果,在圖形消失之前,標題不會被設置。 如果您交換最后幾行代碼如下,

ax.set_title("Title x")
move_figure(fig, 500, 500)
plt.pause(0)

標題應該出現。 或者,我建議從move_figure刪除plt.show ,以便稍后顯示您想要或savefig等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM