CV2識別圖片A,B,C,D

来源:https://www.cnblogs.com/beisi/archive/2019/10/11/11654043.html
-Advertisement-
Play Games

這個模型是經過簡單訓練,只能識別四個英文字母:ABCD,是我為了提取答案才訓練的,因為科大,百度,以及騰訊的識別不是很準,所以自己訓練自己使用,希望能夠給你帶來方便。下麵是訓練好的model,如多你感覺圖片的類型相似,可直接使用。 1、圖片形式,儘量png 2、模型 如果需要可以加我qq:18519 ...


這個模型是經過簡單訓練,只能識別四個英文字母:ABCD,是我為了提取答案才訓練的,因為科大,百度,以及騰訊的識別不是很準,所以自己訓練自己使用,希望能夠給你帶來方便。下麵是訓練好的model,如多你感覺圖片的類型相似,可直接使用。

1、圖片形式,儘量png

2、模型

如果需要可以加我qq:1851999452

 

3、

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天重新返回來看自己的mybatis,總結了一些更好入門的辦法,下麵用最簡單的方法帶領大家入門。 此處先引入類包的關係圖片 1.構建一個==普通==maven項目 構建好之後向pom.xml添加一下依賴 2.創建資料庫,並創建好實體類 ==切記實體類與資料庫相互對應== 3.創建一個dao ==這裡 ...
  • [toc] ntp時間伺服器 ntp簡介 NTP(Network Time Protocol,網路時間協議)是用來使網路中的各個電腦時間同步的一種協議。它的用途是把 電腦的時鐘同步到世界協調時UTC,其精度在區域網內可達0.1ms,在互聯網上絕大多數的地方其精度可以達到1 50ms。 NTP服務 ...
  • 在客戶端能正常遠程訪問服務端的前提下。 客戶端: 1)配置免密 執行 ssh-keygen 即可生成 SSH 鑰匙,回車三次。 執行 ssh-copy-id user@remote,可以讓遠程伺服器記住我們的公鑰。(user為遠程伺服器名,remote為ip地址) 2)配置別名 用ssh mac 來 ...
  • 系統環境: ubuntu 18.04server lts 目標系統IP地址(可訪問):192.168.1.31 emqx版本: v3.2.3 打開網頁,根據目標系統和emqx版本選擇好安裝包。這裡我選擇的是 ubuntu18.04 / deb安裝包,複製下載鏈接 下載安裝包 wget https:/ ...
  • 基本命令 關機/重啟 【root@allen ~】# 【當前登錄用戶@主機名 當前所在目錄】# 當前用戶身份 #號表示管理員root $表示普通用戶登錄 如何關機 如何重啟 系統硬體信息查看 關機命令 poweroff shutdown -h now init 0 halt 重啟命令 reboot ...
  • 篇幅有點長,但是認真看完對你是有很大幫助。 ## -print 將匹配的文件輸出到標準輸出## -exec 將匹配的文件執行該參數所給出的shell命令## -ok 將匹配的文件執行該參數所給出的shell命令,每次執行命令有提示 # find /etc -name passwd -exec rm ...
  • centos 7.x 配置靜態 IP 並啟用 0 問題由來 通過查詢本機的IP,發現本機並沒有有效IP: 所以,我們需要設置本機的靜態IP,並啟用配置。 那我們該如何實現這個目的呢? 1 該修改哪個文件 我們返回上一步查詢本機IP的步驟,仔細查看返回的結果可以獲知: 本機的網路設備名稱——ens33 ...
  • 本文首發於:微信公眾號「運維之美」,公眾號 ID:Hi Linux。 「運維之美」是一個有情懷、有態度,專註於 Linux 運維相關技術文章分享的公眾號。公眾號致力於為廣大運維工作者分享各類技術文章和發佈最前沿的科技信息。公眾號的核心理念是:分享,我們認為只有分享才能使我們的團體更強大。如果你想第一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...