python+opencv图像下采样与扭曲(一)

图像下采样与扭曲方法(一)

`
在模型训练中往往需要合成一些假数据来添加到数据中,来增强训练效果,但是合成的样本和真实样本有的时候相差太远,因此使用下采样和扭曲的方法来模拟真实场景的图片。

一、基础下采样 + 仿射变换
二、透视变换扭曲

前言

使用opencv + python的方法来进行实现

一、基础下采样 + 仿射变换

使用opencv中的resize方法来进行图片下采样,再使用放射变换来扭曲图像

代码如下(示例):

    def basic_downsample_and_warp(image_path, scale_factor=0.5):
        img = cv2.imread(image_path)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

        height, width = img.shape[:2]
        new_width = int(width * scale_factor)
        new_height = int(height * scale_factor)
        downsampled = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)

        rows, cols = downsampled.shape[:2]

        # 源点
        src_points = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])
        dst_points = np.float32([
            [3, 3],
            [cols - 6, -3],
            [4, rows - 4]
        ])

        # 计算仿射变换矩阵
        M = cv2.getAffineTransform(src_points, dst_points)

        # 应用仿射变换
        warped = cv2.warpAffine(downsampled, M, (cols, rows))

        return downsampled, warped

二、透视变换扭曲

使用opencv中的resize方法来进行图片下采样,再使用放射变换来扭曲图像

代码如下(示例):

    def basic_downsample_and_warp(image_path, scale_factor=0.5):
        img = cv2.imread(image_path)
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

        height, width = img.shape[:2]
        new_width = int(width * scale_factor)
        new_height = int(height * scale_factor)
        downsampled = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)

        rows, cols = downsampled.shape[:2]

        # 源点
        src_points = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])
        dst_points = np.float32([
            [5, 5],
            [cols - 10, -5],
            [8, rows - 8]
        ])

        # 计算仿射变换矩阵
        M = cv2.getAffineTransform(src_points, dst_points)

        # 应用仿射变换
        warped = cv2.warpAffine(downsampled, M, (cols, rows))

        return downsampled, warped

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值