国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網站制作怎樣做百度app

網站制作怎樣做,百度app,廣州網站改版方案,官網推廣方法有哪些大家好,我是微學AI,今天給大家介紹一下計算機視覺的應用15-圖片旋轉驗證碼的角度計算模型的應用,解決旋轉圖片矯正問題,在CV領域,圖片旋轉驗證碼的角度計算模型被廣泛應用于解決旋轉圖片矯正問題,有效解決機…

大家好,我是微學AI,今天給大家介紹一下計算機視覺的應用15-圖片旋轉驗證碼的角度計算模型的應用,解決旋轉圖片矯正問題,在CV領域,圖片旋轉驗證碼的角度計算模型被廣泛應用于解決旋轉圖片矯正問題,有效解決機器識別圖片驗證碼的問題。旋轉圖片驗證碼常用于驗證用戶身份,但由于圖片可能被以不同角度旋轉,識別難度比較大。本文提出了一種基于深度學習的角度計算模型,能夠準確估計旋轉圖片的角度,通過旋轉角度進行自動矯正。
本文已經通過使用深度卷積神經網絡對旋轉圖片進行特征提取和表示學習,從而獲得高層抽象表示。通過添加回歸頭,利用旋轉角度標簽數(shù)據(jù)進行訓練,使模型能夠預測旋轉圖片的角度。實驗結果表明,我們提出的模型在多個數(shù)據(jù)集上取得了優(yōu)秀的性能,能夠有效解決旋轉圖片矯正問題。該模型具有良好的魯棒性和廣泛的適應性,可在實際應用中提高驗證碼的識別準確率和用戶體驗。

在這里插入圖片描述

一、數(shù)據(jù)集怎么生成的

我將采用以下的步驟進行:

1.首先我們可以選擇下載大批量的風景圖片,然后進行圖片處理。

2.利用opencv將圖片用圓形進行截取,生成圓形圖片.

3.對圓形圖片進行隨機從60度-180度之間進行旋轉,并保存為字典數(shù)據(jù):包含裁剪后的圖片地址和旋轉角度標簽的值,代碼如下:

import cv2
import numpy as npdef crop_to_circle(image_path):# 加載圖像image = cv2.imread(image_path)# 創(chuàng)建一個與圖像大小相同的黑色背景mask = np.zeros_like(image)# 獲取圖像的中心點坐標height, width, _ = image.shapecenter = (width // 2, height // 2)# 定義半徑為圖像寬高中的較小值radius = min(center[0], center[1])# 在mask上繪制一個白色圓形區(qū)域cv2.circle(mask, center, radius, (255, 255, 255), -1)# 將mask作為掩模,將圖像與掩模進行按位與操作masked_image = cv2.bitwise_and(image, mask)cropped_image =  "circular_cropped_image.jpg"# 保存裁剪后的圖像cv2.imwrite(cropped_image, masked_image)# 隨機生成旋轉角度random_angle = np.random.randint(60, 181)# 對圖像進行旋轉M = cv2.getRotationMatrix2D(center, random_angle, 1.0)rotated_image = cv2.warpAffine(masked_image, M, (width, height))# 顯示結果cv2.imshow("Original Image", image)cv2.imshow("Circular Cropped + Rotated Image", rotated_image)# 保存裁剪加旋轉后的圖像rotated_image_path = "rotated_image.jpg"cv2.imwrite(rotated_image_path, rotated_image)cv2.waitKey(0)cv2.destroyAllWindows()return cropped_image, rotated_image_path,random_angle# 使用示例
image_path = "111.png"
cropped_image,rotated_image_path,random_angle = crop_to_circle(image_path)# 保存圖片地址和旋轉角度標簽的字典數(shù)據(jù)
data = {"image_path":"111.png",'cropped_image':cropped_image,"rotated_path": rotated_image_path,"rotation_angle": random_angle
}
print(data)

在這里插入圖片描述

二、旋轉圖片識別原理

假設我們有一張圖片,我們想要將其逆時針旋轉一個角度為 θ θ θ。我們可以將旋轉過程分解為以下幾個步驟:

1.坐標平移:將圖片的中心點移到原點 ( 0 , 0 ) (0, 0) (0,0)處。我們可以將每個像素點的坐標減去圖片中心的坐標,使得圖片的中心對齊原點。

2.旋轉變換:對于每個像素點 P ( x , y ) P(x, y) P(x,y),應用旋轉矩陣變換來計算新的坐標 P ′ ( x ′ , y ′ ) P'(x', y') P(x,y)。旋轉矩陣表示為:

R ( θ ) = [ cos ? ( θ ) ? sin ? ( θ ) sin ? ( θ ) cos ? ( θ ) ] R(\theta) = \begin{bmatrix} \cos(\theta) & -\sin(\theta) \\ \sin(\theta) & \cos(\theta) \end{bmatrix} R(θ)=[cos(θ)sin(θ)??sin(θ)cos(θ)?]

其中, θ θ θ是旋轉角度, cos ? \cos cos sin ? \sin sin是余弦和正弦函數(shù)。

3.坐標平移:將圖片的中心點移到原來的位置。我們可以將每個像素點的坐標加上圖片中心的坐標,使得圖片回到原來的位置。

4.插值處理:在旋轉后的坐標上可能會出現(xiàn)小數(shù)點的坐標值,而像素點的坐標是整數(shù)。因此,我們需要使用插值方法來確定旋轉后坐標上的像素值。常用的插值方法有最近鄰插值、雙線性插值等。

三、選用模型

本文主要采用resnet50的改造模型,模型的具體結構這邊省略了,為了方便大家快速使用,這里提高訓練好的模型下載:

鏈接:https://pan.baidu.com/s/1aJQ4OD6LwQlLlVwJsMj6aA?pwd=rypw
提取碼:rypw

我們可以構建models文件夾,將resnet50_keras2.hdf5文件放入文件夾中。

代碼實現(xiàn):

from keras.applications.imagenet_utils import preprocess_input
from keras.models import load_model
from keras.optimizers import SGD
import keras.backend as Kimport os
import math
import cv2
import numpy as np
import requestsclass RotateCaptcha():def __init__(self):# 加載模型model_location = os.path.join('.', 'models', 'resnet50_keras2.hdf5')self.model = load_model(model_location, custom_objects={'angle_error': self.angle_error})self.model.compile(loss='categorical_crossentropy',optimizer=SGD(lr=0.01, momentum=0.9),metrics=[self.angle_error])# 圖像長寬尺寸self.size = (224, 224)def showImg(self, image):'''展示圖片'''cv2.imshow('image', image)cv2.waitKey(0)def getImgFromDisk(self, imgPath):image = cv2.imread(imgPath)image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)return imagedef predictAngle(self, image):diameter = image.shape[0]  # 直徑side_length = math.floor((diameter / 2) * 1.414)  # 圓內正方形最大邊長cropped = math.floor((diameter - side_length) / 2)image = image[cropped:cropped + side_length, cropped:cropped + side_length]image = cv2.resize(image, self.size)image = np.expand_dims(image, axis=0)x = preprocess_input(image)y_pred = np.argmax(self.model.predict(x), axis=1)return y_pred[0]def rotate(self, image, angle):image_size = (image.shape[1], image.shape[0])image_center = tuple(np.array(image_size) / 2)# 將 OpenCV 3x2旋轉矩陣轉換為3x3rot_mat = np.vstack([cv2.getRotationMatrix2D(image_center, angle, 1.0), [0, 0, 1]])rot_mat_notranslate = np.matrix(rot_mat[0:2, 0:2])image_w2 = image_size[0] * 0.5image_h2 = image_size[1] * 0.5# 獲取圖像角點的旋轉坐標rotated_coords = [(np.array([-image_w2, image_h2]) * rot_mat_notranslate).A[0],(np.array([image_w2, image_h2]) * rot_mat_notranslate).A[0],(np.array([-image_w2, -image_h2]) * rot_mat_notranslate).A[0],(np.array([image_w2, -image_h2]) * rot_mat_notranslate).A[0]]# 查找新圖像的大小x_coords = [pt[0] for pt in rotated_coords]x_pos = [x for x in x_coords if x > 0]x_neg = [x for x in x_coords if x < 0]y_coords = [pt[1] for pt in rotated_coords]y_pos = [y for y in y_coords if y > 0]y_neg = [y for y in y_coords if y < 0]right_bound = max(x_pos)left_bound = min(x_neg)top_bound = max(y_pos)bot_bound = min(y_neg)new_w = int(abs(right_bound - left_bound))new_h = int(abs(top_bound - bot_bound))trans_mat = np.matrix([[1, 0, int(new_w * 0.5 - image_w2)],[0, 1, int(new_h * 0.5 - image_h2)],[0, 0, 1]])affine_mat = (np.matrix(trans_mat) * np.matrix(rot_mat))[0:2, :]result = cv2.warpAffine(image,affine_mat,(new_w, new_h),flags=cv2.INTER_LINEAR)return resultdef angle_difference(self, x, y):return 180 - abs(abs(x - y) - 180)def angle_error(self, y_true, y_pred):diff = self.angle_difference(K.argmax(y_true), K.argmax(y_pred))return K.mean(K.cast(K.abs(diff), K.floatx()))if __name__ == '__main__':rotateCaptcha = RotateCaptcha()rotated_image = rotateCaptcha.getImgFromDisk('222.jpg')predicted_angle = rotateCaptcha.predictAngle(rotated_image)  # 預測還原角度print("需旋轉角度:{}".format(predicted_angle))corrected_image = rotateCaptcha.rotate(rotated_image, -predicted_angle)  rotateCaptcha.showImg(corrected_image)

運行結果:
1/1 [==============================] - 1s 668ms/step
需旋轉角度:51

生成結果會返回需要選擇的角度,我們根據(jù)角度進行下一步的驗證碼旋轉,進行驗證。

http://m.aloenet.com.cn/news/33277.html

相關文章:

  • 建網站如何賺錢西安seo外包服務
  • wordpress html編輯seo建站是什么
  • 海報設計思路上海網優(yōu)化seo公司
  • react網站開發(fā)介紹東莞seo項目優(yōu)化方法
  • 北京網站建設哪里好經典軟文廣告
  • 做星座網站網站測試的內容有哪些
  • 通過網站做國際貿易的成本軟文廣告文案案例
  • 客戶推廣公司北京搜索引擎優(yōu)化管理專員
  • 怎么給網站做php后臺百度文庫賬號登錄入口
  • 如何把網站放到空間別人可以訪問今日新聞播報
  • 網站代理合作百度推廣怎么做
  • 網站做好了 怎么做解析建網站的軟件有哪些
  • 營銷型網站建設模板今日新聞頭條大事
  • 廣州市城鄉(xiāng)住房建設廳網站惠州百度seo找誰
  • 怎么設計一個自己的網站全網推廣平臺推薦
  • 電子商務網站開發(fā)平臺圖目前較好的crm系統(tǒng)
  • 網站開發(fā)有哪些職位中國十大流量網站
  • 哪些企業(yè)合適做網站核心關鍵詞舉例
  • 網站外鏈建設可以提升網站權重嗎網絡市場營銷策劃書
  • 網站域名hk南京百度推廣優(yōu)化排名
  • 自己設計一個網頁優(yōu)化關鍵詞的方法有哪些
  • 做網站設計需要什么軟件深圳在線制作網站
  • 楊浦做網站百度客服人工電話多少
  • 如何申請做網站編輯呢互聯(lián)網推廣怎么找客戶
  • brackets做的網站阿里巴巴官網首頁
  • 做網站能設置關鍵詞在百度中搜索到百度站長收錄入口
  • 手機web服務器西安搜索引擎優(yōu)化
  • 網站建站圖片網站流量排行
  • 炒域名 網站nba最新新聞新浪
  • 移動端下載百度搜索推廣優(yōu)化師工作內容