opencv 图像bgr rgb Opencv 图像倾斜缩小
转载
实现功能:
图片旋转:按指定的角度对图片进行逆时针旋转
图片平移:按指定的像素大小对图片进行水平和垂直方向的平移
图片缩放:按指定的缩放倍数对图片进行水平方向和垂直方向的缩放
注: 图像的 shape 属性:高、宽、通道数
Image.open()方式读取图像:无法输出图像的shape属性(高、宽、通道数)
cv2.imread()方式读取图像:可以输出图像的shape属性
技巧:
新的文件名中,加入一些提示信息,
例如:处理过后的文件中带有 _ ,使得被处理后的文件不被再次处理
局限性:只能将文件保存到原有目录下
代码:
import os
import glob
from scipy import ndimage
import cv2
import numpy as np
'''获取文件夹下所有指定后缀的文件'''
def get_image_paths(folder):
#return glob.glob(os.path.join(folder, '*.png')) #以png为结尾的文件
return glob.glob(os.path.join(folder, '*.jpg')) #以jpg为结尾的文件
'''图片旋转:旋转指定角度'''
def image_rotate(filename,angle):
#读取文件
#im = Image.open(filename)
im = cv2.imread(filename)
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) #由于opencv默认读取为BGR,需要将其转化为RGB图像
#旋转指定的角度
new_image = ndimage.rotate(im,int(angle))
new_filename = filename[:-4] +'_rotate_' + str(angle) + '.jpg' #在原图片名称的基础上命名新的文件名称
cv2.imwrite(new_filename, new_image) #保存处理后的文件
'''图片平移,平移指定的距离'''
#思路:新建一个矩阵,将平移后对应位置的像素保存到新的矩阵中,最终返回新建的矩阵'''
def translation(filename,translate_x,translate_y):
# 读取文件
img = cv2.imread(filename)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #在该代码中由于opencv读取默认为BGR将其转化为RGB图像
img_h,img_w = img.shape[:2] #图像的shape属性包括:高、宽、通道数
# 新建矩阵dst,用于暂存平移后的图像像素值,初始时矩阵中所有默认值为0
dst = np.zeros(img.shape,dtype=np.uint8)
for row in range(img_h):
for col in range(img_w):
h = int(row-translate_y)
w = int(col-translate_x)
#平移后,在可现实区域部分的像素才可见,黑色进行填充剩余区域(像素默认值为0实现)
if h<img_h and h>=0 and w<img_w and w>=0:
dst[row][col] = img[h][w]
new_filename
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。