# -*- coding: utf-8 -*- #将图片转换为模板 __author__ = '上海色宁' import os import sys import cv2 import numpy as np import uuid import getopt def start_check_argv_and_convert(argv): """ 通过 getopt模块 来识别参数demo, http://blog.csdn.net/ouyang_peng/ """ input_dir = "" dest_dir = "" try: """ options, args = getopt.getopt(args, shortopts, longopts=[]) 参数args:一般是sys.argv[1:]。过滤掉sys.argv[0],它是执行脚本的名字,不算做命令行参数。 参数shortopts:短格式分析串。例如:"hp:i:",h后面没有冒号,表示后面不带参数;p和i后面带有冒号,表示后面带参数。 参数longopts:长格式分析串列表。例如:["help", "ip=", "port="],help后面没有等号,表示后面不带参数;ip和port后面带冒号,表示后面带参数。 返回值options是以元组为元素的列表,每个元组的形式为:(选项串, 附加参数),如:('-i', '192.168.0.1') 返回值args是个列表,其中的元素是那些不含'-'或'--'的参数。 """ opts, args = getopt.getopt(argv, "hi:d:", ["help", "input_dir=","dest_dir="]) except getopt.GetoptError: print('Error: 1_convert_image_into_template.py -i -d ') print(' or: 1_convert_image_into_template.py --input_dir= --dest_dir=') sys.exit(2) # 处理 返回值options是以元组为元素的列表。 if len(opts) != 2 : print('Error: Parameters not enough!') print('Error: 1_convert_image_into_template.py -i -d ') print(' or: 1_convert_image_into_template.py --input_dir= --dest_dir=') sys.exit() for opt, arg in opts: if opt in ("-h", "--h","-help","--help"): print('Error: 1_convert_image_into_template.py -i -d ') print(' or: 1_convert_image_into_template.py --input_dir= --dest_dir=') sys.exit() elif opt in ("-i", "--input_dir"): input_dir = arg elif opt in ("-d", "--dest_dir"): dest_dir = arg print('input_dir:', input_dir) print('dest_dir:', dest_dir) if not os.path.exists(input_dir): print( input_dir+ " is not exist!!!") sys.exit() if not os.path.exists(dest_dir): print( dest_dir+ " is not exist, we are going to creat it !!!") os.makedirs(dest_dir) # 打印 返回值args列表,即其中的元素是那些不含'-'或'--'的参数。 #for i in range(0, len(args)): # print('参数 %s 为:%s' % (i + 1, args[i])) convert_into_template(input_dir,dest_dir) def convert_into_template(input_dir,dest_dir): # 转换图片为匹配模板 filename = os.listdir(input_dir) # 获取文件夹文件 for file in filename: img = cv2.imread(input_dir + "/" + file) # 读取图片 img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 灰度处理 # img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv2.imshow('GrayThings',img_gray) # plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') t,dst1 = cv2.threshold(img,255,0,cv2.THRESH_BINARY) HSV = cv2.cvtColor(dst1, cv2.COLOR_BGR2HSV) H, S, V = cv2.split(HSV) LowerYellow = np.array([20, 20, 20]) UpperYellow = np.array([30, 255, 255]) mask = cv2.inRange(HSV, LowerYellow, UpperYellow) YellowThings = cv2.bitwise_and(dst1, dst1, mask=mask) cv2.imshow('YellowThings',YellowThings) cv2.imwrite(dest_dir+"/t_"+file, YellowThings) #程序入口 if __name__ == '__main__': # 这个的-i -d start_check_argv_and_convert(sys.argv[1:])