经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Windows » 查看文章
CV2识别图片A,B,C,D
来源:cnblogs  作者:错过的爱情  时间:2019/10/12 9:13:54  对本文有异议

这个模型是经过简单训练,只能识别四个英文字母:ABCD,是我为了提取答案才训练的,因为科大,百度,以及腾讯的识别不是很准,所以自己训练自己使用,希望能够给你带来方便。下面是训练好的model,如多你感觉图片的类型相似,可直接使用。

1、图片形式,尽量png

2、模型

如果需要可以加我qq:1851999452

 

3、

  1. 1 import os
  2. 2 import numpy as np
  3. 4 import cv2
  4. 5 import matplotlib.pyplot as plt
  5. 6 import tensorflow as tf
  6. 7 import keras
  7. 8 from keras.models import Model,load_model
  8. 9 from keras.layers import Conv2D,Dense,Activation,Input,MaxPooling2D,Flatten
  9. 10 from sklearn.model_selection import train_test_split
  10. 11 # file_dir = '/home/youxue/BorD'
  11. 12 # B = []
  12. 13 # A =[]
  13. 14 # C =[]
  14. 15 # label_A=[]
  15. 16 # label_C=[]
  16. 17 # label_B = []
  17. 18 # D = []
  18. 19 # label_D = []
  19. 20 # for file in os.listdir(file_dir):
  20. 21 # if file == 'A':
  21. 22 # for img in os.listdir(os.path.join(file_dir, file)):
  22. 23 # A.append(file_dir + '/' + file + '/' + img)
  23. 24 # label_A.append(0)
  24. 25 # elif file == 'B':
  25. 26 # for img in os.listdir(os.path.join(file_dir, file)):
  26. 27 # B.append(file_dir + '/' + file + '/' + img)
  27. 28 # label_B.append(1)
  28. 29 # elif file == 'C':
  29. 30 # for img in os.listdir(os.path.join(file_dir, file)):
  30. 31 # C.append(file_dir + '/' + file + '/' + img)
  31. 32 # label_C.append(2)
  32. 33 # else:
  33. 34 # for img in os.listdir(os.path.join(file_dir, file)):
  34. 35 # D.append(file_dir + '/' + file + '/' + img)
  35. 36 # label_D.append(3)
  36. 37 #
  37. 38 # print('There are %d B\n There are %d D' % (len(B), len(D)))
  38. 39 #
  39. 40 # image_list = np.hstack((A,B,C,D))
  40. 41 # label_list = np.hstack((label_A,label_B,label_C, label_D))
  41. 42 # temp = np.array([image_list, label_list])
  42. 43 # temp = temp.transpose()
  43. 44 #
  44. 45 #
  45. 46 # np.random.shuffle(temp)
  46. 47 # png_list=[]
  47. 48 # image_list = list(temp[:, 0])
  48. 49 # label_list = list(temp[:, 1])
  49. 50 # label_list = [int(i) for i in label_list]
  50. 51 # for png in image_list:
  51. 52 # png_list.append(cv2.imread(png))
  52. 53 # print(png_list[100].shape)
  53. 54 # png = np.array(png_list)
  54. 55 # label = np.array(label_list)
  55. 56 # x_train,x_test,y_train,y_test=train_test_split(png,label,test_size=0.1)
  56. 57 #
  57. 58 # # plt.imshow(x_train[11])
  58. 59 # # plt.show()
  59. 60 #
  60. 61 # x_train = x_train/255.
  61. 62 # x_test = x_test/255.
  62. 63 #
  63. 64 # y_train = np.eye(4)[y_train.reshape(-1)]
  64. 65 # y_test = np.eye(4)[y_test.reshape(-1)]
  65. 66 # print(x_train.shape,y_train.shape)
  66. 67
  67. 68 # input_shape= (24,810,3)
  68. 69 # input_data = Input(input_shape)
  69. 70 # layer1 = Conv2D(32,(3,3),padding='same',activation='relu')(input_data)
  70. 71 # layer2 = MaxPooling2D(pool_size=(2,2))(layer1)
  71. 72 # layer3 = Conv2D(32,(3,3),padding='same',activation='relu')(layer2)
  72. 73 # layer4 = MaxPooling2D(pool_size=(2,2))(layer3)
  73. 74 # layer5 = Conv2D(32,(3,3),padding='same',activation='relu')(layer4)
  74. 75 # layer6 = Flatten()(layer5)
  75. 76 # layer7 = Dense(4)(layer6)
  76. 77 # pred= Activation('softmax')(layer7)
  77. 78 # model= Model(input=input_data,output=pred)
  78. 79 # model.summary()
  79. 80 # model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
  80. 81 # model.fit(x_train,y_train,batch_size=32,epochs=20,validation_data=(x_test,y_test))
  81. 82 # model.save('ABCD.model')
  82. 83 model=load_model('ABCD.model')
  83. 84 #这里填写自己的存放路径
  84. 85 with open('id.txt','a+') as f:
  85. 86 #这里填写你需要识别图片的路径
  86. 87 path=''
  87. 88 for png in os.listdir(path):
  88. 89 pn= cv2.imread(os.path.join(path,png))
  89. 90 ids_1 = png.split('answer')[0]
  90. 91 print(type(ids_1))
  91. 92 #png2= cv2.imread('/home/youxue/4907988answer.png')
  92. 93 # plt.imshow(pn)
  93. 94 # plt.show()
  94. 95 img=[]
  95. 96 img.append(pn)
  96. 97 #img.append(png2)
  97. 98 img=np.array(img)
  98. 99 img = img/255.
  99. 100
  100. 101 # print(img.shape)
  101. 102 pre=model.predict(img)
  102. 103 for c in pre:
  103. 104 temp= max(c[0],c[1],c[2],c[3])
  104. 105 if temp == c[0]:
  105. 106 ABCD = 'A'
  106. 107 elif temp == c[1]:
  107. 108 ABCD = 'B'
  108. 109 elif temp == c[2]:
  109. 110 ABCD = 'C'
  110. 111 else:
  111. 112 ABCD = 'D'
  112. 113
  113. 114 f.write(ids_1 + '--' + ABCD + '\n')

 

原文链接:http://www.cnblogs.com/beisi/p/11654043.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号