最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv實現(xiàn)文檔矯正

 更新時間:2022年08月01日 10:52:00   作者:棒子胡豆  
這篇文章主要為大家詳細介紹了opencv實現(xiàn)文檔矯正功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了opencv實現(xiàn)文檔矯正的具體代碼,供大家參考,具體內(nèi)容如下

原始文檔

矯正后文檔

思路:

只要獲得傾斜文檔的傾斜角度,然后通過仿射變化旋轉(zhuǎn)一下就可以實現(xiàn)矯正了,這里獲取傾斜角度的方法有兩個,下面分別介紹

1、利用霍夫變換,文檔內(nèi)容都是平行的,首先利用利用霍夫變換檢測直線,然后將所有直線的平均傾斜角度當(dāng)做文檔的傾斜角度,最后再進行仿射變換就可以了。

import cv2
import numpy as np
def imshow(img):
? ? cv2.imshow("img",img)
? ? cv2.waitKey(0)
? ? cv2.destroyAllWindows()
img = cv2.imread("2.png",1)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)?
img2 = img.copy()
img_canny = cv2.Canny(img,75,200)?
img_line = cv2.HoughLines(img_canny,1,np.pi/180,280)
average = 0
for line in img_line:?
? ? for rho,theta in line:
? ? ? ? average = average + theta?
average = average / len(img_line)
angel = average/np.pi * 180 - 90
def rotateImg(img,angel):
? ? rows, cols = img.shape
? ? M = cv2.getRotationMatrix2D(((cols - 1) / 2.0, (rows - 1) / 2.0), angel, 1) ?# 旋轉(zhuǎn)中心x,旋轉(zhuǎn)中心y,旋轉(zhuǎn)角度,縮放因子
? ? img = cv2.warpAffine(img, M, (cols, rows),borderValue = (255,255,255)) ?#在內(nèi)存里完成了旋轉(zhuǎn)
? ? imshow(img)
rotateImg(img2,angle)

2、求文檔內(nèi)容的最小包圍矩形。首先檢測輪廓,利用形態(tài)學(xué)操作求mask,然后再檢測輪廓,求最下包圍矩形,最小包圍矩形會返回一個傾斜角度(度數(shù),霍夫變換的傾斜角度是弧度制),可以對輪廓進行篩選,將面積最大的輪廓的傾斜角度作為文檔的傾斜角度,然后做仿射變換。

import cv2
import numpy as np
def imshow(img):
? ? cv2.imshow("img",img)
? ? cv2.waitKey(0)
? ? cv2.destroyAllWindows()
img = cv2.imread("2.png",1)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)?
img2 = img.copy()
imgth = cv2.threshold(img,0,255,cv2.THRESH_OTSU|cv2.THRESH_BINARY_INV)[1]
kernel = np.ones((17,17))
img_open = cv2.morphologyEx(imgth,cv2.MORPH_CLOSE,kernel,10)
# imshow(img_open)
cons = cv2.findContours(img_open,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)[0]
areas = []
for con in cons:
? ? area = cv2.contourArea(con)
? ? areas.append(area)
index = areas.index(max(areas))
# 度數(shù)形式,霍夫變換的返回值是弧度制
rect = cv2.minAreaRect(cons[index])
angle = rect[2]
mat = cv2.getRotationMatrix2D((img.shape[1]/2,img.shape[0]/2),angle,1)
img_fin = cv2.warpAffine(img,mat,(img.shape[1],img.shape[0]),borderValue = (255,255,255))
imshow(img_fin)

補充:

利用仿射變換實現(xiàn)圖像旋轉(zhuǎn)指定度數(shù)

mat = cv2.getRotationMatrix2D(center,angle,c) (center: 旋轉(zhuǎn)中心,angle:旋轉(zhuǎn)角度,c:縮放大?。?br />img_final = cv2.warpAffine(img,mat, (img.shape[1],img.shape[0]), borderValue = (255,255,255)) (borderValue為可選參數(shù),填充色,默認為黑色)

另外旋轉(zhuǎn)指定90,180,270可以使用transpose、flip來實現(xiàn)

旋轉(zhuǎn)90度(順時針)
img = cv2.transpose(img)
res_img = cv2.flip(img,1)

旋轉(zhuǎn)180度
img = cv2.flip(img,0)
img = cv2.flip(img,1)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用 Python 獲取 Linux 系統(tǒng)信息的代碼

    使用 Python 獲取 Linux 系統(tǒng)信息的代碼

    在本文中,我們將會探索使用Python編程語言工具來檢索Linux系統(tǒng)各種信息,需要的朋友可以參考下
    2014-07-07
  • Python中利用Scipy包的SIFT方法進行圖片識別的實例教程

    Python中利用Scipy包的SIFT方法進行圖片識別的實例教程

    SIFT算法可以檢測圖片中的局部特征,算法原理相當(dāng)復(fù)雜...但是!Python強大的第三方包Scipy中帶有實現(xiàn)SIFT算法的SIFT方法,我們只要拿來用就可以了,下面就為大家?guī)鞵ython中利用Scipy包的SIFT方法進行圖片識別的實例教程.
    2016-06-06
  • Python 使用type來定義類的實現(xiàn)

    Python 使用type來定義類的實現(xiàn)

    今天小編就為大家分享一篇Python 使用type來定義類的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 如何使用 python查詢Amazon DynamoDB

    如何使用 python查詢Amazon DynamoDB

    本文介紹了如何使用Python Boto3在Amazon DynamoDB上查詢DynamoDB 表、創(chuàng)建、列出和執(zhí)行其他 CRUD 活動以及執(zhí)行其他維護任務(wù),本文給大家介紹的非常詳細,需要的朋友參考下
    2023-06-06
  • 詳解python路徑拼接os.path.join()函數(shù)的用法

    詳解python路徑拼接os.path.join()函數(shù)的用法

    os.path.join()函數(shù):連接兩個或更多的路徑名組件。這篇文章主要介紹了python路徑拼接os.path.join()函數(shù)的用法,需要的朋友可以參考下
    2019-10-10
  • LeetCode百錢買百雞python遞歸解法示例

    LeetCode百錢買百雞python遞歸解法示例

    這篇文章主要為大家介紹了LeetCode百錢買百雞題目python遞歸解法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • python實現(xiàn)上傳下載文件功能

    python實現(xiàn)上傳下載文件功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)上傳下載文件功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Python技能樹共建之python?urllib?模塊

    Python技能樹共建之python?urllib?模塊

    這篇文章介紹了Python技能樹共建之python?urllib?模塊,urllib模塊是?Python?標(biāo)準(zhǔn)庫,更多相關(guān)介紹需要的小伙伴可以參考下面文章的詳細內(nèi)容
    2022-05-05
  • Python 2.6.6升級到Python2.7.15的詳細步驟

    Python 2.6.6升級到Python2.7.15的詳細步驟

    這篇文章主要介紹了Python 2.6.6升級到Python2.7.15的詳細步驟,本文分步驟給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • python的print輸出在控制臺并且將輸出內(nèi)容保存為文件(最新推薦)

    python的print輸出在控制臺并且將輸出內(nèi)容保存為文件(最新推薦)

    這篇文章主要介紹了python的print輸出在控制臺并且將輸出內(nèi)容保存為文件,我感覺就是類似于重寫一下調(diào)用print的時候執(zhí)行的方法,讓他既能夠在控制臺輸出,也能保存到文件里去,需要的朋友可以參考下
    2023-01-01

最新評論

湖州市| 托克托县| 蕉岭县| 封开县| 沾益县| 花垣县| 余江县| 彩票| 湾仔区| 昌吉市| 祁连县| 金寨县| 榆中县| 榆林市| 海门市| 扎赉特旗| 汾阳市| 满洲里市| 辽阳市| 武清区| 建阳市| 辉县市| 苏尼特左旗| 霞浦县| 潮州市| 锡林浩特市| 民和| 大城县| 堆龙德庆县| 平湖市| 新乡县| 磐石市| 思茅市| 莱西市| 新闻| 江永县| 伊金霍洛旗| 阿克| 德化县| 汾西县| 庆云县|