创建以label为名称的文件夹,生成图片放入label目录下
-
import cv2
-
import os
-
import sys
-
import time
-
-
# 从摄像头中获取图像,按w则保存一张到label目录下
-
if __name__ == '__main__':
-
#capture = cv2.VideoCapture(0) #摄像头/dev/video0
-
capture = cv2.VideoCapture(1) #摄像头/dev/video1
-
if (False == capture.isOpened()):
-
print("capture open failed")
-
sys.exit(-1)
-
-
if (len(sys.argv) != 2):
-
print("error argc != 2")
-
sys.exit(-1)
-
-
label = sys.argv[1] # label
-
curDir = os.path.dirname(os.path.realpath(__file__))
-
labelDir = os.path.join(curDir, label)
-
-
if (False == os.path.exists(labelDir)):
-
os.makedirs(labelDir) #创建label目录
-
-
namei = 0
-
-
while (1):
-
key = cv2.waitKey(1)
-
if (key == ord('q')):
-
print('quit')
-
sys.exit(-1)
-
elif (key == ord('w')): #按w保存
-
namei += 1
-
fileName = os.path.join(labelDir, str(namei))
-
fileName += ".jpg"
-
print(fileName)
-
cv2.imwrite(fileName, img)
-
-
ret, img = capture.read()
-
if (False == ret):
-
print("read failed")
-
time.sleep(1)
-
continue
-
-
cv2.imshow("test", img)
-
-
#time.sleep(1)
-
-
capture.release()
-
cv2.destroyAllWindows()
读取代码如下,遍历文件夹,得到路径及对应label
-
def GetLabelAndFileName(rootdir, level, label):
-
if not os.path.isdir(rootdir):
-
print("not dir")
-
return "",""
-
-
level += 1
-
#print("level:", level)
-
-
labelNames = []
-
list = os.listdir(rootdir)
-
for i in range(0, len(list)):
-
path = os.path.join(rootdir, list[i])
-
if os.path.isfile(path):
-
if (level == 1):
-
#print("ignore:", path)
-
continue
-
else:
-
#print(path, label)
-
labelNames.append({"path":path, "label":label})
-
elif os.path.isdir(path):
-
if (level == 1):
-
label = list[i]
-
#print("set label:", label)
-
labelNames.extend(GetLabelAndFileName(path, level, label))
-
-
return labelNames
-
-
if __name__ == "__main__":
-
labelNames = GetLabelAndFileName(sys.argv[1], 0, "")
-
##print(labelNames)
-
for ln in labelNames:
-
print(ln["path"], ln["label"])
imgs/4/155.jpg 4
imgs/4/156.jpg 4
imgs/4/157.jpg 4
imgs/6/1.jpg 6
imgs/6/2.jpg 6
imgs/6/3.jpg 6
作者:帅得不敢出门
阅读(1083) | 评论(0) | 转发(0) |