图像处理-图像裁剪

1、问题描述

有时在进行图像处理的时候,需要先对图像进行裁剪,如何进行裁剪,很简单。数字图像本质上还是矩阵,只用想着对矩阵做处理就行了。但是有一点必要理解,图像的长度是矩阵的列数,图像的宽度是矩阵的行数。所以说:
对于opencv下的图片,length=image.shape[1], width=image.shape[0]
对于PIL下的图片,length=image.size[0], width=image.size[1]

2、结果展示

原图
在这里插入图片描述
结果:

2.1 opencv结果

在这里插入图片描述

2.2 PIL结果

在这里插入图片描述

3、具体代码

3.1 opencv


import cv2 as cv

def ImShow(name,img):
    cv.imshow(name,img)
    cv.waitKey()
    return;
if __name__ == '__main__':
    src = "/home/barry/PycharmProject/LL/Image/img.png"
    Img = cv.imread(src)

    img = Img.copy();
    img = cv.resize(img,(1200,600))

    print(img.shape)
    print(img.shape[0]," ", img.shape[1])

    length = img.shape[1]        # 长度对应矩阵列数
    width = img.shape[0]        #宽度对应矩阵行数

    w = int(width/2)       #这里不加int会报错,因为width/2的结果是一个浮点数
    img = img[0:w,0:length]

    cv.imwrite('/home/barry/PycharmProject/LL/Image/img_result.jpg',img)
    ImShow("img",img)

3.2 PIL

from PIL import Image
src = "/home/barry/PycharmProject/LL/Image/img.png"

img = Image.open(src).convert('RGB')

a = img.size[0]
b = img.size[1]

a1 = int(a)
b1 = int(b/4)


cropped = img.crop((0,0,a1,b1)) #左上角坐标,右下角坐标
print(img.size)
print(cropped.size)
Image._show(cropped)





猜你喜欢

转载自blog.csdn.net/xdg15294969271/article/details/121520633