draw-wireframe.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import os
  2. import glob
  3. import os.path as osp
  4. import cv2
  5. import numpy as np
  6. import scipy.io
  7. import matplotlib as mpl
  8. import matplotlib.pyplot as plt
  9. from lcnn.utils import parmap
  10. PRED = "/run/media/zyc/YZBackup/Paper/ICCV2019/LCNN/logs/190320-033347-abdf9cb-hg-q2/npz/000072000/*.npz"
  11. GT = "data/q2/valid/*.npz"
  12. WF = "/data/wirebase/result/wireframe/wireframe_1_rerun-baseline_0.5_0.5/2/*.mat"
  13. AFM = "/data/wirebase/result/wireframe/afm/*.npz"
  14. IMGS = "/data/wirebase/data/v1.1/test/*.jpg"
  15. LL = "/data/bible/linelet/*.mat"
  16. def imshow(im):
  17. sizes = im.shape
  18. height = float(sizes[0])
  19. width = float(sizes[1])
  20. fig = plt.figure()
  21. fig.set_size_inches(width / height, 1, forward=False)
  22. ax = plt.Axes(fig, [0.0, 0.0, 1.0, 1.0])
  23. ax.set_axis_off()
  24. fig.add_axes(ax)
  25. plt.xlim([-0.5, sizes[1] - 0.5])
  26. plt.ylim([sizes[0] - 0.5, -0.5])
  27. plt.imshow(im)
  28. def main():
  29. gts = glob.glob(GT)
  30. gts.sort()
  31. afm = glob.glob(AFM)
  32. afm.sort()
  33. wf = glob.glob(WF)
  34. wf.sort()
  35. img = glob.glob(IMGS)
  36. img.sort()
  37. ll = glob.glob(LL)
  38. ll.sort()
  39. prefix = "/data/wirebase/myplot/"
  40. os.makedirs(osp.join(prefix, "GT"), exist_ok=True)
  41. os.makedirs(osp.join(prefix, "LSD"), exist_ok=True)
  42. os.makedirs(osp.join(prefix, "AFM"), exist_ok=True)
  43. os.makedirs(osp.join(prefix, "WF"), exist_ok=True)
  44. os.makedirs(osp.join(prefix, "LL"), exist_ok=True)
  45. def draw(args):
  46. i, (wf_name, gt_name, afm_name, ll_name, img_name) = args
  47. img = cv2.imread(img_name, 0)
  48. lsd = cv2.createLineSegmentDetector(cv2.LSD_REFINE_ADV)
  49. lsd_line, _, _, lsd_score = lsd.detect(img)
  50. lsd_line = lsd_line.reshape(-1, 2, 2)
  51. lsd_score = lsd_score.flatten()
  52. img = cv2.imread(img_name)[:, :, ::-1]
  53. with np.load(gt_name) as fgt:
  54. gt_line = fgt["lpos"][:, :, :2]
  55. gt_line[:, :, 0] *= img.shape[0] / 128
  56. gt_line[:, :, 1] *= img.shape[1] / 128
  57. with np.load(afm_name) as fafm:
  58. afm_line = fafm["lines"].reshape(-1, 2, 2)[:, :, ::-1]
  59. wf_line = scipy.io.loadmat(wf_name)["lines"].reshape(-1, 2, 2)
  60. wf_line = wf_line[:, :, ::-1]
  61. ll_line = scipy.io.loadmat(wf_name)["lines"].reshape(-1, 2, 2)
  62. ll_line = ll_line[:, :, ::-1]
  63. plt.figure("LL")
  64. imshow(img)
  65. for a, b in ll_line - 0.5:
  66. plt.plot([a[1], b[1]], [a[0], b[0]], color="orange", linewidth=0.5)
  67. plt.scatter(a[1], a[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  68. plt.scatter(b[1], b[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  69. plt.savefig(osp.join(prefix, "LL", f"{i:05}"), dpi=500, bbox_inches=0)
  70. plt.close()
  71. plt.figure("GT")
  72. imshow(img)
  73. for a, b in gt_line - 0.5:
  74. plt.plot([a[1], b[1]], [a[0], b[0]], color="orange", linewidth=0.5)
  75. plt.scatter(a[1], a[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  76. plt.scatter(b[1], b[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  77. plt.savefig(osp.join(prefix, "GT", f"{i:05}"), dpi=500, bbox_inches=0)
  78. plt.close()
  79. plt.figure("LSD")
  80. imshow(img)
  81. for a, b in lsd_line[:, :, ::-1] - 0.5:
  82. plt.plot([a[1], b[1]], [a[0], b[0]], color="orange", linewidth=0.5)
  83. plt.scatter(a[1], a[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  84. plt.scatter(b[1], b[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  85. plt.savefig(osp.join(prefix, "LSD", f"{i:05}"), dpi=3000, bbox_inches=0)
  86. plt.close()
  87. plt.figure("AFM")
  88. imshow(img)
  89. for a, b in afm_line - 0.5:
  90. plt.plot([a[1], b[1]], [a[0], b[0]], color="orange", linewidth=0.5)
  91. plt.scatter(a[1], a[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  92. plt.scatter(b[1], b[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  93. plt.savefig(osp.join(prefix, "AFM", f"{i:05}"), dpi=3000, bbox_inches=0)
  94. plt.close()
  95. plt.figure("WF")
  96. imshow(img)
  97. for a, b in wf_line - 0.5:
  98. plt.plot([a[1], b[1]], [a[0], b[0]], color="orange", linewidth=0.5)
  99. plt.scatter(a[1], a[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  100. plt.scatter(b[1], b[0], color="#33FFFF", s=1.2, edgecolors="none", zorder=5)
  101. plt.savefig(osp.join(prefix, "WF", f"{i:05}"), dpi=3000, bbox_inches=0)
  102. plt.close()
  103. parmap(draw, enumerate(zip(wf, gts, afm, ll, img)))
  104. if __name__ == "__main__":
  105. main()