Halcon中实现旋转和翻转(镜像)的函数分别为

rotate_image

mirror_image

在OpenCV也可以容易实现这个功能。

python opencv旋转图像 python opencv 坐标旋转_python

python opencv旋转图像 python opencv 坐标旋转_垂直翻转_02

python opencv旋转图像 python opencv 坐标旋转_垂直翻转_03

python opencv旋转图像 python opencv 坐标旋转_python opencv旋转图像_04

python opencv旋转图像 python opencv 坐标旋转_OpenCV_05

python opencv旋转图像 python opencv 坐标旋转_垂直翻转_06

代码如下:

"""
PyQt AND OpenCV
By LiNYoUBiAo
2020/3/31 19:21
"""
import numpy as np
import cv2 as cv
import math

if __name__ == "__main__":
    imageSrc = cv.imread("c:/pic/lena.jpg", cv.IMREAD_COLOR)
    if imageSrc is None:
        print("Read image Error")
        exit(0)
    # 水平翻转
    imageFlip1 = cv.flip(imageSrc, 0)
    # 垂直翻转
    imageFlip2 = cv.flip(imageSrc, 1)
    # 转换坐标
    sinLen = math.sin(45)
    tanLen = math.atan(45)
    aLen = math.sqrt(0.5**2*2)-0.5
    srcTri = np.array([[0, 0], [0, 1], [1, 1]]).astype(np.float32)
    # dstTri = np.array([[0, 0], [sinLen, sinLen], [tanLen, 0]]).astype(np.float32)
    # dstTri = np.array([[0, 0], [-sinLen, sinLen], [0, tanLen]]).astype(np.float32)
    dstTri = np.array([[0.5, -aLen], [-aLen, 0.5], [0.5, 1+aLen]]).astype(np.float32)
    # 计算转换矩阵
    warp_mat = cv.getAffineTransform(srcTri, dstTri)
    warp_dst = cv.warpAffine(imageSrc, warp_mat, (imageSrc.shape[1], imageSrc.shape[0]))
    rot_mat = cv.getRotationMatrix2D((imageSrc.shape[1]//2, imageSrc.shape[0]//2), -45, 1)
    rot_dst = cv.warpAffine(imageSrc, rot_mat, (imageSrc.shape[1], imageSrc.shape[0]))
    cv.imshow("imageSrc", imageSrc)
    cv.imshow("imageFlip1", imageFlip1)
    cv.imshow("imageFlip2", imageFlip2)
    cv.imshow("warp_dst", warp_dst)
    cv.imshow("rot_dst", rot_dst)
    cv.waitKey(0)
    cv.destroyAllWindows()