专业的编程技术博客社区

网站首页 > 博客文章 正文

OpenCV实现图像缩放不失真(opencv图像resize)

baijin 2024-10-02 11:17:25 博客文章 7 ℃ 0 评论

OpenCV图像缩放用resize或者flip有个共同的缺点,图像变形或失真很严重,调试发现通过图像变换函数warpAffine来实现图像缩放的方法,对比发现没有像resize那样出现因缩放造成的明显变形和失真的情况。如下实现方法,仅供参考,

#调整图像大小,实现缩放
def adjustmentPicSize(img):
    #转灰度
    if len(img.shape) ==3:
        img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    else:
        img_gray = img
    #调整到目标大小
    if destsize is not None:
        # 得到变换的矩阵,通过这个矩阵再利用warpAffine来进行变换
        # 第一个参数就是旋转中心,元组的形式,这里设置成相片中心
        # 第二个参数90,是旋转的角度
        # 第三个参数1,表示放缩的系数,1表示保持原图大小
        rows, cols= img_gray.shape
        #设置变换矩阵
        matrix = cv2.getRotationMatrix2D((cols / 2, rows / 2), 0, 0.5)
        #执行缩放
        img_resize = cv2.warpAffine(img_gray, matrix, (cols,rows))
        #目标Size 512*512
        left = (cols-512)/2#
        top = (rows-512)/ 2
        width = 512
        height = 512
        print(left,top)
        #取中间的目标Size大小        
        img_resize = img_resize[(cols-512) / 2:(cols-512) / 2+512,(rows-512) / 2:(rows-512) / 2+512]
        print(img_resize.shape)
    else:
        img_resize = img_gray
    return img_resize

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表