Python+OpenCV實現(xiàn)旋轉文本校正方式
假設我們有一幅圖像,圖像中的文本被旋轉了一個未知的角度。為了對文字進行角度的校正,我們需要完成如下幾個步驟:
1、檢測出圖中的文本范圍
2、計算出文本被旋轉的角度
3、將圖像旋轉特定的角度
第一步、讀取圖像,并做二值化處理
#讀取圖像,做二值化處理
img = cv.imread('img/imageTextR.png')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('gray', gray)
#像素取反,變成白字黑底
# gray = cv.bitwise_not(gray)
ret, thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow('thresh', thresh)

第二步、計算包含了被旋轉文本的最小邊框
#計算包含了旋轉文本的最小邊框 coords = np.column_stack(np.where(thresh > 0)) print(coords) #該函數(shù)給出包含著整個文字區(qū)域矩形邊框,這個邊框的旋轉角度和圖中文本的旋轉角度一致 angle = cv.minAreaRect(coords)[-1] print(angle)
我們將這些坐標傳給函數(shù)cv.minAreaRect,該函數(shù)將給出包含著整個文字區(qū)域的矩形邊框,這個邊框的旋轉角度和圖中文本的旋轉角度一致。
第三步、調整角度
#調整角度 if angle < -45: angle = -(90+ angle) else: angle = -angle
在角度小于-45的情況下,在原來的角度上增加90度,角度大于-45度,直接對角度反轉。
第四步、執(zhí)行仿射變換
#仿射變換
h, w = img.shape[:2]
center = (w//2, h//2)
print(angle)
M = cv.getRotationMatrix2D(center, angle, 1.0)
rotated = cv.warpAffine(img, M, (w, h), flags=cv.INTER_CUBIC, borderMode=cv.BORDER_REPLICATE)
cv.putText(rotated, 'Angle: {:.2f} degrees'.format(angle), (10, 30), cv.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
print('[INFO] angel :{:.3f}'.format(angle))
cv.imshow('Input', img)
cv.imshow('Rotated', rotated)

以上這篇Python+OpenCV實現(xiàn)旋轉文本校正方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python+OpenCV+圖片旋轉并用原底色填充新四角的例子
- Python+OpenCV 實現(xiàn)圖片無損旋轉90°且無黑邊
- 使用OpenCV實現(xiàn)仿射變換—旋轉功能
- python opencv對圖像進行旋轉且不裁剪圖片的實現(xiàn)方法
- Python3+OpenCV2實現(xiàn)圖像的幾何變換(平移、鏡像、縮放、旋轉、仿射)
- python opencv實現(xiàn)圖片旋轉矩形分割
- python opencv旋轉圖像(保持圖像不被裁減)
- python opencv實現(xiàn)旋轉矩形框裁減功能
- 在Python下利用OpenCV來旋轉圖像的教程
- opencv實現(xiàn)圖像旋轉效果
相關文章
Python如何通過Flask-Mail發(fā)送電子郵件
這篇文章主要介紹了Python如何通過Flask-Mail發(fā)送電子郵件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01
python3.6+selenium實現(xiàn)操作Frame中的頁面元素
這篇文章主要為大家詳細介紹了python3.6+selenium實現(xiàn)操作Frame中的頁面元素,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-07-07
使用Cython中prange函數(shù)實現(xiàn)for循環(huán)的并行
Cython中提供了一個prange函數(shù),專門用于循環(huán)的并行執(zhí)行。這個 prange的特殊功能是Cython獨一無二的,并且prange只能與for循環(huán)搭配使用,不能獨立存在。本文就將使用 prange 實現(xiàn) for 循環(huán)的并行,感興趣的可以了解一下2022-08-08
Python實現(xiàn)經典算法拓撲排序、字符串匹配算法和最小生成樹實例
這篇文章主要介紹了Python實現(xiàn)經典算法拓撲排序、字符串匹配算法和最小生成樹實例,拓撲排序、字符串匹配算法和最小生成樹是計算機科學中常用的數(shù)據結構和算法,它們在解決各種實際問題中具有重要的應用價值,需要的朋友可以參考下2023-08-08
Python實現(xiàn)求取表格文件某個區(qū)域內單元格的最大值
這篇文章主要介紹基于Python語言,基于Excel表格文件內某一列的數(shù)據,計算這一列數(shù)據在每一個指定數(shù)量的行的范圍內(例如每一個4行的范圍內)的區(qū)間最大值的方法,需要的朋友可以參考下2023-08-08

