Skip to content Skip to sidebar Skip to footer

Opencv - Adjusting Photo With Skew Angle (tilt)

I have a camera pointing at a Zen Garden from above. However, the camera is fixed on the side rather than directly above the plate. As a result, the image looks like this (note the

Solution 1:

You can do perspective transformation on your image. Here's a first shot that gets you in the ballpark:

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

You can fiddle more with the numbers, but you get the idea.

Here's some online examples. The first link has a useful plot of peg points that correlate to the transformation matrix:

Post a Comment for "Opencv - Adjusting Photo With Skew Angle (tilt)"