一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 利用Python將圖片中扭曲矩形的復(fù)原

利用Python將圖片中扭曲矩形的復(fù)原

2020-09-08 00:11颹蕭蕭 Python

這篇文章主要給大家介紹了關(guān)于如何利用Python將圖片中扭曲矩形復(fù)原的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

日常生活中,手殘黨們經(jīng)常會(huì)把一些照片拍歪,比如拍個(gè)證件、試卷、PPT什么的,

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

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

利用Python將圖片中扭曲矩形的復(fù)原

你一定想到了 PS,因?yàn)榫W(wǎng)上很多教程就是這么教的

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

可是這樣手工的調(diào)整數(shù)值實(shí)在是費(fèi)勁喲!!

利用Python將圖片中扭曲矩形的復(fù)原

下面我們來寫個(gè)程序,自動(dòng)將圖片恢復(fù)到任意矩形!

程序?qū)崿F(xiàn)

1. 打開圖片并顯示

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import cv2 as cv
import numpy as np
 
path = './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. 在圖片中標(biāo)記四個(gè)角點(diǎn)

利用Python將圖片中扭曲矩形的復(fù)原

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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+1
 
def 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('第{}個(gè)頂點(diǎn): ({},{})'.format(curr_id, x, y))
  
  cv.circle(img, (x, y), 10, (0, 0, 255), thickness = 2)
  cv.putText(
   img, 
   str(curr_id),   # 文字
   (x, y),     # 坐標(biāo)
   cv.FONT_HERSHEY_PLAIN,
   5,      # 字號(hào)
   (0,0,255),    # 字體顏色
   thickness = 2   # 粗細(xì)
  )
 
  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. 設(shè)定輸出矩形大小

?
1
2
3
4
# W = int(input('輸出圖片寬度:'))
# H = int(input('輸出圖片高度:'))
W,H = 600, 800
target_points = [(0,0),(W,0),(W,H),(0,H)]

4. 求解透視變換矩陣

?
1
2
3
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. 透視變換并保存圖片

?
1
2
3
4
5
6
7
8
9
10
11
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)

結(jié)果如下

利用Python將圖片中扭曲矩形的復(fù)原

結(jié)果沒有想象的完美,是因?yàn)闀姆饷嬉呀?jīng)不是一個(gè)平面了,書角翹起。。。

如果圖片中的矩形在一個(gè)平面上的話,效果還是挺不錯(cuò)的!!

利用Python將圖片中扭曲矩形的復(fù)原

完整代碼下載

可關(guān)注后免費(fèi)下載喔:https://download.csdn.net/download/itnerd/12819535

總結(jié)

到此這篇關(guān)于利用Python將圖片中扭曲矩形復(fù)原的文章就介紹到這了,更多相關(guān)Python圖片扭曲矩形復(fù)原內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/itnerd/article/details/108429553

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎在线免费 | 国内久久久 | 欧美一级在线视频 | 国产 日韩 一区 | 亚洲欧美色综合图小说 | 欧美一区二区三区精品 | 国产精品亚洲w码日韩中文 国产精品香蕉在线观看不卡 | 爽好舒服快想要免费看 | 国产成人久久精品区一区二区 | fuqer日本 | 饭冈加奈子在线播放观看 | 特黄未满14周岁毛片 | 精品小视频在线观看 | 亚洲欧美日韩另类精品一区二区三区 | 久久www免费人成高清 | 亚洲欧美自偷自拍另类小说 | 色哟呦 | 国产区成人精品视频 | 色综合天天综合网站中国 | 精品国产乱码久久久久久人妻 | 精品久久久久久亚洲 | 日本精品一区二区三区 | 人人最怕九月羊 | 新影音先锋男人色资源网 | aaa毛片视频免费观看 | 99视频精品全部免费观看 | 亚洲AV无码国产精品色在线看 | 男人操女生 | 国产成人综合久久精品红 | 国产好深好硬好爽我还要视频 | 国产成人精品在线观看 | 99热在线获取最新地址 | 国产情侣啪啪 | 干美女视频| 欧美在线视频免费播放 | 好妈妈7在线观看高清 | 日出水了特别黄的视频 | 久久视频这有精品63在线国产 | 国产高清一区二区三区免费视频 | 亚洲AV无码国产精品午夜久久 | 99久久成人 |