Python---截取图片指定部分

python实现图片指定部分的截取

Pillow版

from PIL import Image
import matplotlib.pyplot as plt

def show_cut(path, left, upper, right, lower):
    """
        原图与所截区域相比较
    :param path: 图片路径
    :param left: 区块左上角位置的像素点离图片左边界的距离
    :param upper:区块左上角位置的像素点离图片上边界的距离
    :param right:区块右下角位置的像素点离图片左边界的距离
    :param lower:区块右下角位置的像素点离图片上边界的距离
     故需满足:lower > upper、right > left
    """

    img = Image.open(path)

    print("This image's size: {}".format(img.size))   #  (W, H)
    
    plt.figure("Image Contrast")

    plt.subplot(1, 2, 1)
    plt.title('origin')
    plt.imshow(img)
    plt.axis('off')

    box = (left, upper, right, lower)
    roi = img.crop(box)

    plt.subplot(1, 2, 2)
    plt.title('roi')
    plt.imshow(roi)
    plt.axis('off')
    plt.show()


def image_cut_save(path, left, upper, right, lower, save_path):
    """
        所截区域图片保存
    :param path: 图片路径
    :param left: 区块左上角位置的像素点离图片左边界的距离
    :param upper:区块左上角位置的像素点离图片上边界的距离
    :param right:区块右下角位置的像素点离图片左边界的距离
    :param lower:区块右下角位置的像素点离图片上边界的距离
     故需满足:lower > upper、right > left
    :param save_path: 所截图片保存位置
    """
    img = Image.open(path)  # 打开图像
    box = (left, upper, right, lower)
    roi = img.crop(box)

    # 保存截取的图片
    roi.save(save_path)


if __name__ == '__main__':
    pic_path = 'xxxx.jpg'
    pic_save_dir_path = 'cut.jpg'
    left, upper, right, lower = 0, 1085, 1654, 1450
    show_cut(pic_path, left, upper, right, lower)
    image_cut_save(pic_path, left, upper, right, lower, pic_save_dir_path)

OpenCV版

import cv2
import matplotlib.pyplot as plt

"""
    使用OpenCV截取图片
"""

def show_cut(path, left, upper, right, lower):
    """
        原图与所截区域相比较
    :param path: 图片路径
    :param left: 区块左上角位置的像素点离图片左边界的距离
    :param upper:区块左上角位置的像素点离图片上边界的距离
    :param right:区块右下角位置的像素点离图片左边界的距离
    :param lower:区块右下角位置的像素点离图片上边界的距离
     故需满足:lower > upper、right > left
    """

    img = cv2.imread(path)

    print("This image's size: {}".format(img.shape))  # (H, W, C)

    plt.figure("Image Contrast")
    plt.subplot(1, 2, 1)
    plt.title('origin')
    plt.imshow(img)  # 展示图片的颜色会改变
    plt.axis('off')

    cropped = img[upper:lower, left:right]

    plt.subplot(1, 2, 2)
    plt.title('roi')
    plt.imshow(cropped)
    plt.axis('off')
    plt.show()


def image_cut_save(path, left, upper, right, lower, save_path):
    """
        所截区域图片保存
    :param path: 图片路径
    :param left: 区块左上角位置的像素点离图片左边界的距离
    :param upper:区块左上角位置的像素点离图片上边界的距离
    :param right:区块右下角位置的像素点离图片左边界的距离
    :param lower:区块右下角位置的像素点离图片上边界的距离
     故需满足:lower > upper、right > left
    :param save_path: 所截图片保存位置
    """
    img = cv2.imread(path)  # 打开图像
    cropped = img[upper:lower, left:right]

    # 保存截取的图片
    cv2.imwrite(save_path, cropped)


if __name__ == '__main__':
    pic_path = 'xxxx.jpg'
    pic_save_dir_path = 'cut.jpg'
    left, upper, right, lower = 0, 1450, 1654, 1700
    show_cut(pic_path, left, upper, right, lower)
    image_cut_save(pic_path, left, upper, right, lower, pic_save_dir_path)
    

参考博客:Python实现图片裁剪的两种方式——Pillow和OpenCV

你可能感兴趣的:(Python,python,opencv)