比较两种对图像进行指定角度旋转的算法(批量操作)

比较两种对图像进行指定角度旋转的算法(批量操作)

A方法 用了python的3个库函数
1.open cv
2.argparse
3.os

A方法效果如下:

原图像:
在这里插入图片描述

按指定角度旋转后的图像:
在这里插入图片描述

实现了在分辨率不调整的情况下,对原图像内容旋转,缺失部分用黑色填充

B方法 用了python的3个库函数
1.open cv
2.numpy
3.os

B方法效果如下:

原图像:

在这里插入图片描述
按指定角度旋转后的图像:
在这里插入图片描述旋转后,图像内容不会缺失,但图像分辨率对调

A方法代码实现

# -*- coding: utf-8 -*-
import cv2
import os
import imutils
if __name__ == '__main__':
    # 读取所有图片的路径
    path_original = "./P01_Fe_38/SC_TI/"  # 原文件夹,要求文件夹只含有图片
    path_target = "./P01_Fe_38/a/"  # 目标文件夹
    path_images = os.listdir(path_original)
    for path_image in path_images:
   	path_absolute = '{}//{}'.format(path_original, path_image)  # 构造绝对路径
        # 读取图片
     	img = cv2.imread(path_absolute)
        rotated = imutils.rotate(img, 270)
        path_save = '{}//{}'.format(path_target, path_image)  # 构造      
        cv2.imwrite(path_save, rotated)

B方法代码实现

# -*- coding:utf-8 -*-
from math import *
import cv2
import numpy as np
import os
def rotate_bound1(image, angle):	
	(h, w) = image.shape[:2]  # 返回(高,宽,色彩通道数),此处取前两个值返回
	# 抓取旋转矩阵(应用角度的负值顺时针旋转)。参数1为旋转中心点;参数2为旋转角度,正的值表示逆时针旋转;参数3为各向同性的比例因子
    	M = cv2.getRotationMatrix2D((w / 2, h / 2), -angle, 1.0)
    	newW = int((h * np.abs(M[0, 1])) + (w * np.abs(M[0, 0])))
    	newH = int((h * np.abs(M[0, 0])) + (w * np.abs(M[0, 1])))
    	# 调整旋转矩阵以考虑平移
    	M[0, 2] += (newW - w) / 2
    	M[1, 2] += (newH - h) / 2
    	# 执行实际的旋转并返回图像
    	return cv2.warpAffine(image, M, (newW, newH)) # borderValue 缺省,默认是黑色
if __name__ == '__main__':
    path_original = "./imag/"  # 原文件夹,要求文件夹只含有图片
    path_target = "./imag/abc/"  # 目标文件夹
    path_images = os.listdir(path_original)
     for path_image in path_images:
        path_absolute = '{}//{}'.format(path_original, path_image)  # 构造绝对路径
        # 读取图片
        img_origin = cv2.imread(path_absolute)
        img = rotate_bound1(img_origin, 90)
        cv2.waitKey(100)
        path_save ='{}//{}'.format(path_target, path_image)  # 构造
        cv2.imwrite(path_save, img)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值