欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python圖像處理之透視變換的實戰(zhàn)應用

 更新時間:2021年08月31日 12:59:29   作者:趙卓不凡  
透視變換(Perspective Transformation)是將圖片投影到一個新的視平面(Viewing Plane),也稱作投影映射(Projective Mapping),下面這篇文章主要給大家介紹了關(guān)于Python圖像處理之透視變換的相關(guān)資料,需要的朋友可以參考下

1 引言

如果你想對圖像進行校準,那么透視變換是非常有效的變換手段。透視變換的定義為將圖像投影到一個新的視平面,通常也被稱之為投影映射。

2 公式

一般來說,通用的圖像變換公式如下所示:


上述公式中,u,v代表原始圖像坐標,x,y為經(jīng)過透視變換的圖片坐標,其中變換矩陣為3X3形式。進而可以得到:

3 舉例

在介紹opencv的透視變換函數(shù)之前,我們舉例來講解該算法的原理:


直觀的來看,透視變換的作用就是將左側(cè)圖像的坐標點

[[50,0],[150,0],[0,200],[200,200]]

轉(zhuǎn)化為新的坐標

[[0,0],[200,0],[0,200],[200,200]]

通過計算我們知道,轉(zhuǎn)換矩陣如下:


我們來驗證一下,采用左上角的點(50,0)帶入公式,如下:

接著我們將列向量的前兩維度除以第三維執(zhí)行歸一化:


所以我們知道原圖左上角點執(zhí)行透視變換后的映射關(guān)系:

4 應用

本文以撲克牌的例子來進行講解,樣例結(jié)果如下:

請?zhí)砑訄D片描述

4.1 讀入圖像

首先我們來讀入一副彩色圖像,如下:

import cv2
import numpy as np
img = cv2.imread("image/sample.jpg")
h, w, c = img.shape  # h=240  w=320

4.2 挑選源圖四個點

接著我們需要挑選四個點,我們這里采用左上,左下,右下和右上,下面的代碼把我們挑選的四個點畫到圖像上

src_list = [(61, 70), (151, 217), (269, 143), (160, 29)]
for i, pt in enumerate(src_list):
	cv2.circle(img, pt, 5, (0, 0, 255), -1)
	cv2.putText(img,str(i+1),(pt[0]+5,pt[1]+10),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
pts1 = np.float32(src_list)

結(jié)果如下:

請?zhí)砑訄D片描述

4.3 進行透視變換

首先選擇四個目的圖像上的點,然后調(diào)用openv函數(shù)進行透視變換,代碼如下:

pts2 = np.float32([[0, 0], [0, w - 2], [h - 2, w - 2], [h - 2, 0]])
matrix = cv2.getPerspectiveTransform(pts1, pts2)
result = cv2.warpPerspective(img, matrix, (h, w))
cv2.imshow("Image", img)
cv2.imshow("Perspective transformation", result)
cv2.waitKey(0)

得到結(jié)果如下:

請?zhí)砑訄D片描述

5 應用

我們在實際應用中,可以使用透視變換來替換廣告牌中對應的背景圖,結(jié)果如下:

廣告牌:

請?zhí)砑訄D片描述

Logo圖:

請?zhí)砑訄D片描述

結(jié)果圖:

請?zhí)砑訄D片描述

6 總結(jié)

本文介紹了圖像處理透視變換的原理和具體代碼實現(xiàn),并給出了具體應用示例。

到此這篇關(guān)于Python圖像處理之透視變換的文章就介紹到這了,更多相關(guān)Python圖像透視變換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

7 參考

參考 鏈接一 鏈接二

相關(guān)文章

最新評論