亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

利用Python將圖片中扭曲矩形的復原

瀏覽:4日期:2022-07-12 09:15:46

前言

日常生活中,手殘黨們經常會把一些照片拍歪,比如拍個證件、試卷、PPT什么的,

比如下面這本書的封面原本是個矩形,隨手一拍就成了不規則四邊形

想要把它變成規則的矩形,有什么辦法呢?

利用Python將圖片中扭曲矩形的復原

你一定想到了 PS,因為網上很多教程就是這么教的

打開PS ⟹Longrightarrow⟹ 濾鏡 ⟹Longrightarrow⟹鏡頭校正 ⟹Longrightarrow⟹自定 ⟹Longrightarrow⟹變換

可是這樣手工的調整數值實在是費勁喲!!

利用Python將圖片中扭曲矩形的復原

下面我們來寫個程序,自動將圖片恢復到任意矩形!

程序實現

1. 打開圖片并顯示

import cv2 as cvimport numpy as nppath = ’./book.jpg’src = cv.imread(path)def get_window_size(src, bound=600): h,w = src.shape[0], src.shape[1] if h > w: h, w = bound, int(w*bound/h) else: h, w = int(h*bound/w), bound return (h, w)h, w = get_window_size(src)win_name = ’RecAdjust’cv.namedWindow(win_name, cv.WINDOW_NORMAL)cv.resizeWindow(win_name, width=w, height=h)cv.imshow(win_name, src)cv.waitKey(0)cv.destroyAllWindows()

2. 在圖片中標記四個角點

利用Python將圖片中扭曲矩形的復原

src_copy = src.copy()class Indexer: def __init__(self, bound=4): self.id = 0 self.bound=bound def get_id(self): self.id = (self.id+1)%self.bound return (self.id-1)%self.bound+1def on_EVENT_LBUTTONDOWN(event, x, y, flags, param): if event == cv.EVENT_LBUTTONDOWN: img = param[’src’] win_name = param[’window’] indexer = param[’indexer’] points = param[’points’] curr_id = indexer.get_id() points.append((x,y)) print(’第{}個頂點: ({},{})’.format(curr_id, x, y)) cv.circle(img, (x, y), 10, (0, 0, 255), thickness = 2) cv.putText( img, str(curr_id), # 文字 (x, y), # 坐標 cv.FONT_HERSHEY_PLAIN, 5, # 字號 (0,0,255), # 字體顏色 thickness = 2 # 粗細 ) cv.imshow(win_name, img)points = []indexer = Indexer()win_name = ’RecAdjust’cv.namedWindow(win_name, cv.WINDOW_NORMAL)cv.resizeWindow(win_name, width=w, height=h)cv.imshow(win_name, src)cv.setMouseCallback(win_name, on_EVENT_LBUTTONDOWN, param={’src’:src,’window’:win_name, ’indexer’:indexer, ’points’:points})cv.waitKey(0)cv.destroyAllWindows()print(points)

3. 設定輸出矩形大小

# W = int(input(’輸出圖片寬度:’))# H = int(input(’輸出圖片高度:’))W,H = 600, 800target_points = [(0,0),(W,0),(W,H),(0,H)]

4. 求解透視變換矩陣

points, target_points = np.array(points, dtype=np.float32), np.array(target_points, dtype=np.float32)M = cv.getPerspectiveTransform(points, target_points)print(’透視變換矩陣:’,M)

5. 透視變換并保存圖片

result = cv.warpPerspective(src_copy, M, (0, 0))result = result[:H, :W]win_name = ’Result’cv.namedWindow(win_name, cv.WINDOW_NORMAL)cv.resizeWindow(win_name, width=W, height=H)cv.imshow(win_name, result)cv.waitKey(0)cv.destroyAllWindows()output_file = ’result.jpg’cv.imwrite(output_file, result)

結果如下

利用Python將圖片中扭曲矩形的復原

結果沒有想象的完美,是因為書的封面已經不是一個平面了,書角翹起。。。

如果圖片中的矩形在一個平面上的話,效果還是挺不錯的!!

利用Python將圖片中扭曲矩形的復原

完整代碼下載

可關注后免費下載喔:https://download.csdn.net/download/itnerd/12819535(本地下載)

總結

到此這篇關于利用Python將圖片中扭曲矩形復原的文章就介紹到這了,更多相關Python圖片扭曲矩形復原內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 久久se精品一区二区国产 | 婷婷综合缴情亚洲狠狠图片 | 老年人黄色一级片 | 中文字幕欧美日韩一 | 久久99精品久久久久久首页 | 蝌蚪蚪窝视频在线视频手机 | 日韩欧美亚洲视频 | 国产妇女性爽视频免费 | 亚洲成人精品 | 国产成人精品久久免费动漫 | 日韩欧美一级毛片视频免费 | 乱淫的女高中h | a级午夜| 国产高清免费午夜在线视频 | 免费看午夜高清性色生活片 | 欧美成人综合在线观看视频 | 91极品视频在线观看 | 亚洲国产精品毛片∧v卡在线 | 国产99精品在线观看 | 国产精品免费看久久久久 | 成人午夜私人影院入口 | 亚洲系列中文字幕一区二区 | 精品国产丝袜自在线拍国 | 亚洲欧美成人一区二区在线电影 | 中文国产成人精品久久水 | 亚洲九九精品 | 国产xxxx色视频在线观看14 | 亚洲精品综合在线 | 欧亚色视频 | 欧美一区二区三区久久久人妖 | 亚洲欧美国产精品 | 黄色一极毛片 | 国产最新凸凹视频免费 | 国产精品一区二 | 欧美精品做人一级爱免费 | 日韩精品电影一区 | 无夜精品久久久久久 | 国产精品每日在线观看男人的天堂 | 日韩欧美精品综合一区二区三区 | 欧美日韩午夜精品不卡综合 | 国产91精品一区二区视色 |