OpenCV-调整照片的倾斜角度(倾斜)

J_y*_*ang 4 python opencv image-processing

我有一台照相机从上方指向禅宗花园。但是,相机固定在侧面,而不是直接固定在平板上方。结果,图像看起来像这样(注意矩形的偏斜形状): 在此处输入图片说明

有没有一种方法可以处理图像,以使沙子区域或多或少看起来像一个完美的正方形?

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
Run Code Online (Sandbox Code Playgroud)

非常感谢。

Vel*_*ker 7

您可以对图像进行透视变换。这是让您进入球场的第一枪:

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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

您可以用数字来摆弄更多,但是您知道了。

这是一些在线示例。第一个链接具有与转换矩阵相关的钉点的有用图: