<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了opencv實現檔案矯正的具體程式碼,供大家參考,具體內容如下
原始檔案
矯正後檔案
只要獲得傾斜檔案的傾斜角度,然後通過仿射變化旋轉一下就可以實現矯正了,這裡獲取傾斜角度的方法有兩個,下面分別介紹
1、利用霍夫變換,檔案內容都是平行的,首先利用利用霍夫變換檢測直線,然後將所有直線的平均傾斜角度當做檔案的傾斜角度,最後再進行仿射變換就可以了。
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) # 旋轉中心x,旋轉中心y,旋轉角度,縮放因子 img = cv2.warpAffine(img, M, (cols, rows),borderValue = (255,255,255)) #在記憶體裡完成了旋轉 imshow(img) rotateImg(img2,angle)
2、求檔案內容的最小包圍矩形。首先檢測輪廓,利用形態學操作求mask,然後再檢測輪廓,求最下包圍矩形,最小包圍矩形會返回一個傾斜角度(度數,霍夫變換的傾斜角度是弧度制),可以對輪廓進行篩選,將面積最大的輪廓的傾斜角度作為檔案的傾斜角度,然後做仿射變換。
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)) # 度數形式,霍夫變換的返回值是弧度制 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)
利用仿射變換實現影象旋轉指定度數
mat = cv2.getRotationMatrix2D(center,angle,c) (center: 旋轉中心,angle:旋轉角度,c:縮放大小)
img_final = cv2.warpAffine(img,mat, (img.shape[1],img.shape[0]), borderValue = (255,255,255)) (borderValue為可選引數,填充色,預設為黑色)
另外旋轉指定90,180,270可以使用transpose、flip來實現
旋轉90度(順時針)
img = cv2.transpose(img)
res_img = cv2.flip(img,1)
旋轉180度
img = cv2.flip(img,0)
img = cv2.flip(img,1)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45