2015-11-03 172 views
2

我有一台摄像机指向上面的禅园。但是,相机固定在侧面而不是正上方。因此,图像看起来像这样(注意矩形的倾斜形状): enter image description hereOpenCV - 调整倾斜角度的照片(倾斜)

有没有办法处理图像,以便沙区看上去或多或少像一个完美的正方形?

cap = cv2.VideoCapture(0) 
while True: 
    ret, img = cap.read() 
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    img = cv2.flip(img,0) 
    cv2.imshow('Cropping', img) 
    if cv2.waitKey(500) & 0xff == 27: 
     cv2.destroyAllWindows() 
     break 

非常感谢。

回答

1

您可以对图像进行透视转换。这里是一个让你在球场第一拍:

import cv2 
import numpy as np 

img = cv2.imread('zen.jpg') 
rows, cols, ch = img.shape  
pts1 = np.float32(
    [[cols*.25, rows*.95], 
    [cols*.90, rows*.95], 
    [cols*.10, 0], 
    [cols,  0]] 
) 
pts2 = np.float32(
    [[cols*0.1, rows], 
    [cols,  rows], 
    [0,  0], 
    [cols,  0]] 
)  
M = cv2.getPerspectiveTransform(pts1,pts2) 
dst = cv2.warpPerspective(img, M, (cols, rows)) 
cv2.imshow('My Zen Garden', dst) 
cv2.imwrite('zen.jpg', dst) 
cv2.waitKey() 

enter image description here

您可以用数字拨弄多,但你的想法。

以下是一些在线示例。第一个环节具有的挂钩点有用的剧情有关联的变换矩阵: