一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

opencv獲取模板旋轉(zhuǎn)角度

 新用戶79878317 2022-05-31 發(fā)布于河南

在我們的日常生活中,所碰到的圖像往往都有一定的傾斜。那么,如何用OpenCV來獲取圖像的旋轉(zhuǎn)角度呢?

我們以下面的圖片為例,簡單介紹如何用OpenCV來獲取圖像的旋轉(zhuǎn)角度。

3408429

4.png

可以看到,該圖像存在著許多噪聲,且是彩色圖片,因此,需要對圖像做預(yù)處理。

預(yù)處理

圖像的預(yù)處理包括去除邊緣,去除噪聲(兩條灰色線),濾波,二值化等,具體處理的Python代碼如下:

#-*- coding: utf-8 -*-

importcv2

imagepath= 'F://CHN_Char/4.png'img= cv2.imread(imagepath, 1)#將圖片的邊緣變?yōu)榘咨?/p>

height, width = img.shape[0:2]for i inrange(width):

img[0, i]= [255]*3img[height-1, i] = [255]*3

for j inrange(height):

img[j, 0]= [255]*3img[j, width-1] = [255]*3

#去掉灰色線(即噪聲)

for i inrange(height):for j inrange(width):if list(img[i,j]) == [204,213,204]:

img[i,j]=[255]*3

#把圖片轉(zhuǎn)換為灰度模式

gray =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#中值濾波

blur = cv2.medianBlur(gray, 3) #模板大小3*3#二值化

ret,thresh = cv2.threshold(blur, 200, 255, cv2.THRESH_BINARY)#保存圖片

cv2.imwrite('F://CHN_Char/char_after_bin.png', thresh)

預(yù)處理后的圖片如下:

3408429

預(yù)處理后的圖片

可以看到,預(yù)處理后的圖像基本不含噪聲,且是黑色圖片,這樣,我們就可以進行后續(xù)操作了。

獲取旋轉(zhuǎn)角度

對于上述預(yù)處理后的圖片,可以用OpenCV的最小外接矩形方法(minAreaRect())來操作,該方法會返回最小外界矩形的中心點左邊,矩形寬度、高度,以及旋轉(zhuǎn)角度。因為圖像中只有一個文字,因此包含該文字的最小外接矩形返回的角度就是圖像的旋轉(zhuǎn)角度(當(dāng)然也有可能是負(fù)值)。

完整的Python代碼如下:

#-*- coding: utf-8 -*-

importcv2importnumpy as np

imagepath= 'F://CHN_Char/char_after_bin.png'img= cv2.imread(imagepath, -1)

image, contours, _= cv2.findContours(img, 2, 2)for cnt incontours:#最小外界矩形的寬度和高度

width, height = cv2.minAreaRect(cnt)[1]if width* height > 100:#最小的外接矩形

rect =cv2.minAreaRect(cnt)

box= cv2.boxPoints(rect) #獲取最小外接矩形的4個頂點

box =np.int0(box)if 0 not inbox.ravel():'''繪制最小外界矩形

for i in range(4):

cv2.line(image, tuple(box[i]), tuple(box[(i+1)%4]), 0) # 5'''

#旋轉(zhuǎn)角度

theta = cv2.minAreaRect(cnt)[2]if abs(theta) <= 45:print('圖片的旋轉(zhuǎn)角度為%s.'%theta)

angle=theta#仿射變換,對圖片旋轉(zhuǎn)angle角度

h, w =img.shape

center= (w//2, h//2)

M= cv2.getRotationMatrix2D(center, angle, 1.0)

rotated= cv2.warpAffine(img, M, (w, h), flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)#保存旋轉(zhuǎn)后的圖片

cv2.imwrite('F://CHN_Char/after_rotated.png', rotated)

輸出結(jié)果如下:

圖片的旋轉(zhuǎn)角度為-23.629377365112305.

得到的圖像如下:

3408429

旋轉(zhuǎn)后的圖像

在上述Python代碼中,先是利用minAreaRect()獲取圖像中的最小外接矩形,加上一定的篩選條件(如矩形的面積大于100,旋轉(zhuǎn)角度小于45度等)就能得到包含文字的最小外界矩形,其旋轉(zhuǎn)角度就是整個圖像的旋轉(zhuǎn)角度。

識別圖像中的文字

有了旋轉(zhuǎn)后的圖像,我們不妨利用Tesseract-OCR軟件來識別圖像中的文字,完整的Python代碼如下:

importpytesseractimportcv2#tesseract.exe所在的文件路徑

pytesseract.pytesseract.tesseract_cmd = 'C://Program Files (x86)/Tesseract-OCR/tesseract.exe'imagepath= 'F://CHN_Char/after_rotated.png'image= cv2.imread(imagepath, -1)

text= pytesseract.image_to_string(image, lang='chi_sim', config='-psm 10')print('Tesseract-OCR的識別結(jié)果為: '%s'.'%text)

輸出結(jié)果為:

Tesseract-OCR的識別結(jié)果為: '知'.

因此,我們得到的圖像的旋轉(zhuǎn)角度是正確的。當(dāng)然,借用以上方法,還可以識別以下圖片中的文字:

3408429

識別文字

總結(jié)

本次獲取圖像的旋轉(zhuǎn)角度是利用了圖像中只有一個文字,而包含該文字的最小外接矩形的旋轉(zhuǎn)角度就是圖像的旋轉(zhuǎn)角度。這只是獲取圖像旋轉(zhuǎn)角度的一種方式,當(dāng)然,還會有其他獲取圖像旋轉(zhuǎn)角度的方法.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产成人精品国产亚洲欧洲| 国产一区二区三区四区中文| 好吊一区二区三区在线看| 国产午夜精品久久福利| 午夜国产精品国自产拍av| 亚洲最大福利在线观看| 东京热加勒比一区二区| 久久亚洲成熟女人毛片| 色综合视频一区二区观看 | 国产一区二区三区av在线| 久草精品视频精品视频精品| 麻豆91成人国产在线观看| 国产丝袜女优一区二区三区| 精品人妻少妇二区三区| 黑人巨大精品欧美一区二区区| 国产高清视频一区不卡| 亚洲天堂精品一区二区| 免费在线成人午夜视频| 欧美三级精品在线观看| 亚洲一区二区精品免费| 中文字幕五月婷婷免费| 国产精品夜色一区二区三区不卡| 欧美人妻少妇精品久久性色| 欧洲亚洲精品自拍偷拍| 国产精品涩涩成人一区二区三区| 欧美激情床戏一区二区三| 少妇福利视频一区二区| 国产又色又爽又黄又免费| 91精品国产综合久久福利| 女生更色还是男生更色| 国产精品久久三级精品| 日本加勒比不卡二三四区| 亚洲一区二区亚洲日本| 最新日韩精品一推荐日韩精品| 国产精品欧美一区二区三区不卡| 日韩偷拍精品一区二区三区| 最新日韩精品一推荐日韩精品| 精品欧美日韩一区二区三区| 亚洲一区二区三区av高清| 一区二区三区国产日韩| 国产精品一区二区日韩新区|