import os
import cv2
import numpy as np
#将json文件label转换为到data文件夹
n=10 #n为总共标注的图片数
for i in range(n):
os.system("labelme_json_to_dataset E:/labelme/json/(%d).json -o E:/labelme/data/(%d)_json"%(i,i))
#dst_w=512
#dst_h=512
#dst_shape=(dst_w,dst_h,3)
train_image = "E:/train_image/"
if not os.path.exists(train_image):
os.makedirs(train_image)
train_label = "E:/train_label/"
if not os.path.exists(train_label):
os.makedirs(train_label)
for i in range(n):
print(i)
img=cv2.imread("E:/labelme/data/(%d)_json/img.png"%i)
label=cv2.imread("E:/labelme/data/(%d)_json/label.png"%i)
print (img.shape)
label=label/np.max(label[:,:,2])*255
label[:,:,0]=label[:,:,1]=label[:,:,2]
print(np.max(label[:,:,2]))
# cv2.imshow('l',label)
# cv2.waitKey(0)
print(set(label.ravel()))
cv2.imwrite(train_image+'(%d).png'%i,img)
cv2.imwrite(train_label+'(%d).png'%i,label)
能给出改过的程序吗!!!
你的图像路径不存在,所以cv2.imread返回为空,所以img.shape会报NonetType Object的错。可以加一个判断,如果文件路径不存在,忽略直接进下一轮循环
检查以下图像路径是不是正确的。
import os
import cv2
import numpy as np
# 将json文件label转换为到data文件夹
n = 10 # n为总共标注的图片数
for i in range(n):
os.system("labelme_json_to_dataset E:/labelme/json/(%d).json -o E:/labelme/data/(%d)_json" % (i, i))
# dst_w=512
# dst_h=512
# dst_shape=(dst_w,dst_h,3)
train_image = "E:/train_image/"
if not os.path.exists(train_image):
os.makedirs(train_image)
train_label = "E:/train_label/"
if not os.path.exists(train_label):
os.makedirs(train_label)
for i in range(n):
print(i)
if not os.path.exits("E:/labelme/data/(%d)_json/img.png" % i):
print("E:/labelme/data/(%d)_json/img.png :not exits!" % i)
continue
else:
img = cv2.imread("E:/labelme/data/(%d)_json/img.png" % i)
label = cv2.imread("E:/labelme/data/(%d)_json/label.png" % i)
print(img.shape)
label = label / np.max(label[:, :, 2]) * 255
label[:, :, 0] = label[:, :, 1] = label[:, :, 2]
print(np.max(label[:, :, 2]))
# cv2.imshow('l',label)
# cv2.waitKey(0)
print(set(label.ravel()))
cv2.imwrite(train_image + '(%d).png' % i, img)
cv2.imwrite(train_label + '(%d).png' % i, label)
os.system("labelme_json_to_dataset E:/labelme/json/(%d).json -o E:/labelme/data/(%d)_json" % (i, i)
这行代码你应该是通过labelme_json_to_dataset实现将labelme的.json文件解析,然后提取实现2个功能:
1,解析图片。并将图片复制保存到E:/labelme/data/(%d)_json/img.png
2,解析label, 保存label图像到E:/labelme/data/(%d)_json/label.png
接下来对label.png进一步处理,将img.png和label.png分别保存在E:/train_image/和E:/train_label/文件夹下。
所以,json文件转换到data是空的,是因为你的labelme_json_to_dataset没有写好。这个要看你的具体json文件的内容写代码……,基于你上文贴的代码,不能修改啥了
不知道理解的是否正确