国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何將圖片恢復水平位置?圖片旋轉矯正方法大全,ddddocr作者基于RotNet的旋轉驗證碼深度學習識別模型Rotate-Captcha-Crack

這篇具有很好參考價值的文章主要介紹了如何將圖片恢復水平位置?圖片旋轉矯正方法大全,ddddocr作者基于RotNet的旋轉驗證碼深度學習識別模型Rotate-Captcha-Crack。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于邊緣檢測的圖像旋轉校正模型:

該模型首先使用邊緣檢測算法對圖像進行邊緣檢測,然后找到邊緣上的直線,并計算直線的角度。最后通過旋轉圖像來校正圖像的角度。

import cv2
import numpy as np

# 加載圖像
img = cv2.imread('skewed_image.jpg')

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 使用Canny算子查找邊緣
edges = cv2.Canny(gray, 50, 150, apertureSize=3)

# 查找直線并計算旋轉角度
lines = cv2.HoughLines(edges, 1, np.pi/180, 100)
angle = np.mean(lines[:, 0, 1]) * 180 / np.pi - 90

# 旋轉圖像進行校正
(rows, cols) = img.shape[:2]
center = (cols / 2, rows / 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
result = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)

# 顯示圖像
cv2.imshow('Original', img)
cv2.imshow('Corrected', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

基于Hough變換的圖像旋轉校正模型:

該模型基于Hough變換算法來檢測圖像中的直線,并計算直線角度,然后使用旋轉矩陣將圖像旋轉到正確的角度。

import cv2
import numpy as np

# 加載圖像
img = cv2.imread('skewed_image.jpg')

# 轉換為灰度圖像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 使用Canny算子查找邊緣
edges = cv2.Canny(gray, 50, 150, apertureSize=3)

# 進行Hough變換,查找直線
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

# 找到最長的線
max_len = 0
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a * rho
    y0 = b * rho
    x1 = int(x0 + 1000 * (-b))
    y1 = int(y0 + 1000 * (a))
    x2 = int(x0 - 1000 * (-b))
    y2 = int(y0 - 1000 * (a))
    length = np.sqrt((x1 - x2)**2 + (y1 - y2)**2)
    if length > max_len:
        max_len = length
        longest_line = [x1, y1, x2, y2]

# 計算旋轉角度
dx = longest_line[2] - longest_line[0]
dy = longest_line[3] - longest_line[1]
angle = np.degrees(np.arctan2(dy, dx))

# 進行旋轉校正
rows, cols = img.shape[:2]
rotation_matrix = cv2.getRotationMatrix2D((cols/2, rows/2), angle, 1)
result = cv2.warpAffine(img, rotation_matrix, (cols, rows), flags=cv2.INTER_CUBIC)

# 顯示圖像
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

基于模板匹配的圖像旋轉校正模型:

該模型使用圖像的局部特征來找到最優(yōu)旋轉角度,其主要思想是通過旋轉圖像來將其與預定義的模板進行匹配,并找到最小的匹配差異度,從而確定最優(yōu)旋轉角度。

import cv2
import numpy as np

# 加載圖像和模板
img = cv2.imread('skewed_image.jpg')
template = cv2.imread('template.jpg', 0)

# 計算模板的旋轉矩陣
(h, w) = template.shape[:2]
center = (w // 2, h // 2)
M = cv2.getRotationMatrix2D(center, 45, 1.0)

# 旋轉模板并計算SIFT特征點
template = cv2.warpAffine(template, M, (w, h))
sift = cv2.SIFT_create()
(kps, descs) = sift.detectAndCompute(template, None)

# 計算圖像的SIFT特征點并進行匹配
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
(kps2, descs2) = sift.detectAndCompute(gray, None)
bf = cv2.BFMatcher()
matches = bf.match(descs, descs2)

# 找到最優(yōu)旋轉矩陣
matches = sorted(matches, key=lambda x:x.distance)
src_pts = np.float32([kps[m.queryIdx].pt for m in matches])
dst_pts = np.float32([kps2[m.trainIdx].pt for m in matches])
M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
theta = -np.degrees(np.arctan2(M[0, 1], M[0, 0]))

# 旋轉圖像進行校正
(rows, cols) = img.shape[:2]
center = (cols / 2, rows / 2)
M = cv2.getRotationMatrix2D(center, theta, 1.0)
result = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)

# 顯示圖像
cv2.imshow('Original', img)
cv2.imshow('Corrected', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

基于特征點匹配的圖像旋轉校正模型:

該模型首先使用特征點檢測算法來檢測圖像中的關鍵點,并計算其描述子。然后,通過計算兩個圖像的特征點之間的距離和實現(xiàn)旋轉角度的估計和校正。

import cv2
import numpy as np

# 加載圖像
img = cv2.imread('skewed_image.jpg')

# 使用SIFT特征點檢測算法檢測圖像的關鍵點
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img,None)

# 旋轉圖像并使用同樣的方法檢測關鍵點
[h, w] = img.shape[:2]
M = cv2.getRotationMatrix2D((w/2,h/2),45,1.0)
img_rot = cv2.warpAffine(img,M,(w,h))
kp2, des2 = sift.detectAndCompute(img_rot,None)

# 匹配關鍵點并計算旋轉角度
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1, des2, k=2)
good = []
for m, n in matches:
    if m.distance < 0.5 * n.distance:
        good.append(m)
src_pts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2)
dst_pts = np.float32([kp2[m.trainIdx.pt for m in good]).reshape(-1, 1, 2)
M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
theta = -np.degrees(np.arctan2(M[0, 1], M[0, 0]))

#旋轉圖像進行校正
(rows, cols) = img.shape[:2]
center = (cols / 2, rows / 2)
M = cv2.getRotationMatrix2D(center, theta, 1.0)
result = cv2.warpAffine(img, M, (cols, rows), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)

#顯示圖像
cv2.imshow('Original', img)
cv2.imshow('Corrected', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上兩種方法的實現(xiàn)示例,使用OpenCV中的函數(shù)和庫實現(xiàn)。其中基于模板匹配的方法旋轉圖像到與模板最佳匹配的角度,而基于特征點匹配的方法檢測圖像和旋轉后的圖像之間的關鍵點差異,并估計出最佳的旋轉角度進行校正。這兩個方法都可以在一定程度上對圖像進行旋轉校正,但需要注意的是,如果圖像中的旋轉角度過大或存在嚴重的非線性扭曲,則可能會降低這兩種方法的效果。因此,在選擇適當?shù)膱D像旋轉校正方法時,應考慮到具體應用場景,以及旋轉程度和所需校正的精度等因素。
上述四種模型都可以用于圖像旋轉校正,但它們的優(yōu)點和缺點各不相同,需要根據(jù)具體應用場景選擇合適的模型。

https://www.python.org/downloads/windows/

ddddocr作者的旋轉驗證碼識別模型Rotate-Captcha-Crack

Rotate-Captcha-Crack

https://github.com/Starry-OvO/rotate-captcha-crack

中文 | English

CNN預測圖片旋轉角度,可用于破解百度旋轉驗證碼

測試效果:

如何將圖片恢復水平位置?圖片旋轉矯正方法大全,ddddocr作者基于RotNet的旋轉驗證碼深度學習識別模型Rotate-Captcha-Crack

本倉庫實現(xiàn)了三類模型:

名稱 Backbone 損失函數(shù) 跨域測試誤差(越小越好) 大?。∕B)
RotNet ResNet50 交叉熵 1.1548° 92.7
RotNetR RegNetY 3.2GFLOPs 交叉熵 1.2825° 69.8
RCCNet_v0_5 RegNetY 3.2GFLOPs MSE+余弦修正 42.7774° 68.7

RotNetd4nst/RotNet的PyTorch實現(xiàn)。RotNetR僅在RotNet的基礎上替換了backbone,并將分類數(shù)減少至180。其在谷歌街景數(shù)據(jù)集上訓練64個epoch(耗時2小時)得到的平均預測誤差為1.2825°。目前RCCNet_v0_5效果較差,推薦使用RotNetR

跨域測試使用谷歌街景/Landscape-Dataset作為訓練集,百度驗證碼作為測試集(特別鳴謝@xiangbei1997)

演示用到的百度驗證碼圖片來自RotateCaptchaBreak

體驗已有模型

準備環(huán)境

  • 支持CUDA10+的GPU(如需訓練則顯存還需要不少于4G)

  • 確保你的Python版本>=3.8 <3.11

  • 確保你的PyTorch版本>=1.11

  • 拉取代碼并安裝依賴庫

git clone --depth=1 https://github.com/Starry-OvO/rotate-captcha-crack.git
cd ./rotate-captcha-crack
pip install .

注意不要漏了install后面那個.

  • 或者,使用虛擬環(huán)境
git clone --depth=1 https://github.com/Starry-OvO/rotate-captcha-crack.git
python -m venv ./rotate-captcha-crack --system-site-packages
cd ./rotate-captcha-crack
# 根據(jù)你的Shell類型挑選一個合適的腳本激活虛擬環(huán)境 例如./Script/Active.ps1
python -m pip install -U pip
pip install .

下載預訓練模型

下載Release中的壓縮包并解壓到./models文件夾下

文件目錄結構類似./models/RCCNet_v0_5/230228_20_07_25_000/best.pth

本項目仍處于beta階段,模型名稱會頻繁發(fā)生變更,因此出現(xiàn)任何FileNotFoundError請先嘗試用git回退到對應的tag

輸入一個驗證碼圖像并查看旋轉效果

如果你的系統(tǒng)沒有GUI,嘗試把debug方法從顯示圖像改成保存圖像

python test_captcha.py

使用http服務端

  • 安裝額外依賴
pip install aiohttp httpx[cli]
  • 運行服務端
python server.py
  • 另開一命令行窗口發(fā)送圖像
 httpx -m POST http://127.0.0.1:4396 -f img ./test.jpg

訓練新模型

準備數(shù)據(jù)集

  • 我這里直接扒的谷歌街景和Landscape-Dataset,你也可以自己收集一些風景照并放到一個文件夾里,圖像沒有尺寸要求

  • train.py里配置dataset_root變量指向裝有圖片的文件夾

  • 不需要手動標注,dataset會在讀取圖片的同時自動完成矩形裁剪、縮放旋轉等工作

訓練

python train_RotNetR.py

在測試集上驗證模型

python test_RotNetR.py

相關文章

吾愛破解 - 簡單聊聊旋轉驗證碼攻防文章來源地址http://www.zghlxwxcb.cn/news/detail-478836.html

到了這里,關于如何將圖片恢復水平位置?圖片旋轉矯正方法大全,ddddocr作者基于RotNet的旋轉驗證碼深度學習識別模型Rotate-Captcha-Crack的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 旋轉圖片兩種方法

    這兩種方法在旋轉圖像時,可能會產生一些不同的效果: rotate_image_new()旋轉后的圖像完全包含旋轉前的內容,并且填充邊界盡可能小 rotate_image() 保持原始圖像的大小,并根據(jù)填充選項決定是否填充邊界為白色。如果 if_fill_white 參數(shù)為 True,則填充邊界為白色;否則,邊界將保

    2024年02月11日
    瀏覽(16)
  • 圖片矯正

    圖片矯正

    ????????在平面圖片處理時,因為鏡頭角度等原因,容易導致圖像出現(xiàn)傾斜、變形等情況。為了方便后續(xù)處理常常需要進行圖像矯正,其中主要技術原理是兩種變換類型--仿射變換( Affine Transformation )和透視變換( Perspective Transformation )。 ????????仿射變換是二維坐標間的

    2024年02月12日
    瀏覽(21)
  • ppt批量刪除每頁相同位置文稿(圖片文字等)的方法

    第一步:打開視圖-宏 第二步:輸入宏名(可以是人以文字、字母或數(shù)字加字母,但不能是純數(shù)字) 第三步:點擊創(chuàng)建 第四步:復制以下文字 第五步:刪除原來的“宏代碼” 第六步:將復制的文字粘貼到打開的“宏代碼”空白處 第七步:關閉或最小化“宏代碼”文檔 第八

    2024年02月16日
    瀏覽(27)
  • Uniapp 調用 原生安卓方法 使用cv 實現(xiàn)圖片人臉識別 返回人臉位置和人臉數(shù)量
  • 一文通透位置編碼:從標準位置編碼、歐拉公式到旋轉位置編碼RoPE

    一文通透位置編碼:從標準位置編碼、歐拉公式到旋轉位置編碼RoPE

    關于位置編碼和RoPE? 應用廣泛,是很多大模型使用的一種位置編碼方式,包括且不限于LLaMA、baichuan、ChatGLM等等 我之前在本博客中的另外兩篇文章中有闡述過(一篇是關于LLaMA解讀的,一篇是關于transformer從零實現(xiàn)的),但自覺寫的不是特別透徹好懂 再后來在我參與主講的類C

    2024年02月08日
    瀏覽(18)
  • 電腦數(shù)據(jù)丟失如何恢復?最常見的2種數(shù)據(jù)恢復方法!

    電腦數(shù)據(jù)丟失如何恢復?最常見的2種數(shù)據(jù)恢復方法!

    大家使用電腦的時候是否有發(fā)生過不小心刪除數(shù)據(jù),或者數(shù)據(jù)不明丟失的情況呢?相信九成都是有的,那么當你的數(shù)據(jù)不小心刪除或是丟失的話,有沒有電腦數(shù)據(jù)恢復方法?其實很多人當自己電腦的數(shù)據(jù)丟失后,如果不是很重要的數(shù)據(jù)都會直接放棄找回,重新下載新的,也有

    2024年02月10日
    瀏覽(26)
  • RoPE(旋轉式位置編碼)

    RoPE(旋轉式位置編碼)

    出發(fā)點:“通過絕對位置編碼的方式實現(xiàn)相對位置編碼” 1.假設一個函數(shù)f()通過他能讓q,k帶上絕對位置信息 對q,k進行操作(f())使得他們帶上位置m,n的絕對位置信息, 通過內積后,希望結果帶上相對位置信息,因此假設存在下列恒等關系 2.根據(jù)以上的恒等式求出f()

    2024年02月11日
    瀏覽(25)
  • iPhone如何恢復出廠設置?蘋果手機恢復出廠設置教程【3種方法】

    iPhone如何恢復出廠設置?蘋果手機恢復出廠設置教程【3種方法】

    如果你的iPhone用了很長時間,覺得卡頓、速度慢,這時可以將iPhone恢復出廠設置。 那么,怎樣才可以將蘋果手機恢復出廠設置呢?接下來小編就給大家介紹將iPhone或iPad恢復出廠設置的詳細操作方法。 如果你的iPhone可以開機并正常使用,可以進入【設置】-【通用】-【還原】

    2024年02月09日
    瀏覽(91)
  • 榮耀路由2S如何恢復出廠設置?榮耀路由2S恢復出廠設置的方法介紹

    榮耀路由2S不僅功能多種多樣,每一個功能的設置方法也非常多,就連恢復出廠設置的方法也有三種。下面小編將這款榮耀路由2S恢復出廠設置的方法一一告訴大家,快來看看吧! 榮耀路由2S恢復出廠設置的方法介紹 方法一:路由器機身恢復出廠設置 華為路由2S的三個WAN/LAN接

    2024年02月07日
    瀏覽(23)
  • 一文通透位置編碼:從標準位置編碼、旋轉位置編碼RoPE到ALiBi、LLaMA 2 Long

    一文通透位置編碼:從標準位置編碼、旋轉位置編碼RoPE到ALiBi、LLaMA 2 Long

    關于位置編碼和RoPE? 應用廣泛,是很多大模型使用的一種位置編碼方式,包括且不限于LLaMA、baichuan、ChatGLM等等 我之前在本博客中的另外兩篇文章中有闡述過(一篇是關于LLaMA解讀的,一篇是關于transformer從零實現(xiàn)的),但自覺寫的不是特別透徹好懂 再后來在我參與主講的類C

    2024年02月03日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包