图像分类处理小工具

功能:将图片移入对应文件夹

# -*- coding: utf-8 -*-
"""

This is a image labelTool script file.
parameter:  
      labelMap :   a dict like {0:'other',1:'cat',2:'dog',3:'car'}
      path :       image dir
This script will create some dirs in path. Each of those dirs will store pictures of one class in labelMap 
"""
from __future__ import print_function
import cv2
import os
import shutil

def createDir(path,labelMap):
    
    if(not isinstance(labelMap,dict)):
        print("labelMap must be a dict.....like {0:'cat',1:'dog'}")
        return False
    if(not os.path.exists(path)):
        print("{} is not exists!!!".format(path))
        return False
    for k,v in zip(labelMap.keys(),labelMap.values()):
        classPath = os.path.join(path,v)
        if(not os.path.exists(classPath)):
            os.mkdir(classPath)
    return True

        
def dealFile(filePath,labelMap):
    home = os.path.dirname(filePath)
    print("0-9 is setelct class , blank is pass,Esc is quit ")
    print(labelMap)
    while(1):
        key = cv2.waitKey(0)
        key = key - 0x30
        if(key >= 0 and key < len(labelMap)) or key== -21 or key==-16 : break
        print(key)
    

    print(labelMap,key)
    if(key==-16): return
    dst = os.path.join(home,labelMap[key])
    shutil.copy(filePath,dst)
    return

def select(path,labelMap):
    
    if(not createDir(path,labelMap)):
        return
    postfix = ('.jpg','png','.bmp')
    fileNames = os.listdir(path)
    for filename in fileNames:
        if(not filename.endswith(postfix)):
            continue
        filePath = os.path.join(path,filename)
        img = cv2.imread(filePath)
        cv2.imshow(str(filename),img)
        dealFile(filePath,labelMap)
        cv2.destroyAllWindows()
       
if __name__ == "__main__":
    labelMap = {0:'other',1:'cat',2:'dog',3:'car'}
    path = "C:\\workspace\\testSelect"
    select(path,labelMap)
        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值