关于shanghaiTech的介绍,可以看我之前的写的博客(https://blog.csdn.net/johnhamtom/article/details/104481186?spm=1001.2014.3001.5501)
如标题所示,如下的代码根据mat文件中存储的关键点坐标信息将关键点画到了对应图片上,并利用opencv库在窗口上进行了可视化展示,其中要说明的是,(1)images文件夹存储着图片数据(IMG_打头),ground_truth文件夹存储着mat文件(GT_IMG_打头),images文件夹和ground_truth文件夹都是在同一个文件目录下。(2)代码实现的是对单张图片的可视化展示。
代码如下:
import json
import os, cv2
import scipy.io as io
def MatVisual(imgpath):
matpath = imgpath.replace('.jpg','.mat').replace('IMG_','GT_IMG_').replace('images','ground_truth') # 图片文件对应mat文件路径
mat = io.loadmat(matpath) # 读取mat文件
keypoints = mat["image_info"][0, 0][0, 0][0] # 取出关键点坐标
img = cv2.imread(imgpath, 1) # 读取图片
for keypont in keypoints:
cv2.circle(img, (int(keypont[0]),int(keypont[1])), 1, (0, 0, 255), 4) # 画点
cv2.namedWindow(imgpath, 0) # 创建窗口
cv2.resizeWindow(imgpath, img.shape[1], img.shape[0]) # 创建窗口
cv2.imshow(imgpath, img)
cv2.waitKey(0)
if __name__ == "__main__":
rootPath = r'./Shanghai/part_A_final/train_data/train_data/images' # 图片所在路径
imgName = 'IMG_11.jpg' # 图片名
MatVisual(os.path.join(rootPath,imgName))
展示图如下: