Opencv 透視變換python實現效果

2021-10-07 08:08:42 字數 2537 閱讀 9570

原始(即需要變換的)

透視變換**

# -*- coding:utf-8 -*-

import cv2

import numpy as np

import matplotlib.pyplot as plt

# 計算透視變換引數矩陣

defcal_perspective_params

(img, points)

:# 設定偏移點。如果設定為(0,0),表示透視結果只顯示變換的部分(也就是畫框的部分)

offset_x =

100 offset_y =

100 img_size =

(img.shape[1]

, img.shape[0]

) src = np.float32(points)

# 透視變換的四個點

dst = np.float32(

[[offset_x, offset_y]

,[img_size[0]

- offset_x, offset_y]

,[offset_x, img_size[1]

- offset_y]

,[img_size[0]

- offset_x, img_size[1]

- offset_y]])

# 透視矩陣

m = cv2.getperspectivetransform(src, dst)

print

(m)# 透視逆矩陣

m_inverse = cv2.getperspectivetransform(dst, src)

print

(m_inverse)

return m, m_inverse

# 透視變換

defimg_perspect_transform

(img, m)

: img_size =

(img.shape[1]

, img.shape[0]

)return cv2.warpperspective(img, m, img_size)

defdraw_line

(img,p1,p2,p3,p4)

: points =

[list

(p1)

,list

(p2)

,list

(p3)

,list

(p4)

]# 畫線

img = cv2.line(img, p1, p2,(0

,0,255),

3)img = cv2.line(img, p2, p4,(0

,0,255),

3)img = cv2.line(img, p4, p3,(0

,0,255),

3)img = cv2.line(img, p3, p1,(0

,0,255),

3)return points,img

if __name__ ==

'__main__'

:# 觀察影象畫素大小,便於手動選點

)# 選取四個點,分別是左上、右上、左下、右下

points, img = draw_line(img,

(208

,320),

(798

,315),

(160

,1308),

(1011

,1230))

cv2.imshow(

'test01'

,img)

cv2.waitkey(0)

cv2.imwrite(

'test01.png'

,img)

m, m_inverse = cal_perspective_params(img, points)

trasform_img = img_perspect_transform(img, m)

# 觀察透檢視像畫素大小

plt.figure(

) plt.imshow(trasform_img)

plt.show(

) cv2.imshow(

'test02.png'

,trasform_img)

cv2.waitkey(0)

cv2.imwrite(

'test02.png'

,trasform_img)

選中透視區域(確定四個座標點)

透視效果

透視變換原理

可參考:

opencv透視變換

1 目前效果最好的乙個 但還是紙牌能檢測出來 2 下面將我修改執行成功的 貼出,至於優化,提高識別四邊形準確度,還需要繼續研究。透視變換,檢測四邊形,有時候容易檢測不出 但目前效果最好的就是該程式 include stdafx.h include core core.hpp include incl...

opencv 透視變換

cv getperspectivetransform c 介面其呼叫形式如下 point2f src 4 dst 4 src 0 x 賦值 cv mat cv getperspectivetransform 返回透視變換矩陣 const cv point2f src,源影象四個頂點座標 點陣列 co...

OpenCV 透視變換矯正

演示結果參考 功能實現 執行程式,會顯示的尺寸,按回車鍵後,依次點選需矯正的的左上 右上 左下 右下角,並能顯示其座標,結果彈出矯正後的,如圖上的pic2對話方塊。可以繼續選擇四個點進行實驗,按下字元 q 後退出。如下 注 圖中的11.jpg自己選取放到該程式目錄下。使用滑鼠在原影象上選取感興趣區域...