图片指定区域截图

文章介绍了如何使用Python中的OpenCV和PIL库,通过手动选择图片上的裁剪区域,获取并保存坐标,以便于后续截图操作。提供了custom_crop和crop_and_save_image两个函数,分别处理自动选择区域和指定坐标裁剪的场景。
摘要由CSDN通过智能技术生成

在拿到一张图片时,如果要进行截图操作,那么就需要获取图片中需要截取位置,也就是坐标。通常是4个点位置,如果没有辅助工具,很比较麻烦的。

比如,获取上图中的验证码部分。

为了解决这一问题,我们可以调用python,来通过手动截取,然后保存坐标位置。

import cv2
import json
import pytesseract
from PIL import Image


def custom_crop(image_path='test.jpg', save_path='cropped_region.json'):
    # 读取图片
    image = cv2.imread(image_path)

    # 创建窗口并显示图片
    cv2.namedWindow('Select Region')
    cv2.imshow('Select Region', image)

    # 选择裁剪区域
    print("Select the region to crop and press 'c' to confirm:")
    bbox = cv2.selectROI('Select Region', image, fromCenter=False, showCrosshair=True)
    cv2.destroyAllWindows()

    # 裁剪图像
    cropped_image = image[int(bbox[1]):int(bbox[1]+bbox[3]), int(bbox[0]):int(bbox[0]+bbox[2])]

    # 如果提供了保存路径,则保存裁剪区域的坐标位置
    if save_path:
        region_data = {'x': int(bbox[0]), 'y': int(bbox[1]), 'width': int(bbox[2]), 'height': int(bbox[3])}
        with open(save_path, 'w') as json_file:
            json.dump(region_data, json_file)

    return cropped_image
#第一个参数是验证码图片路径,第二个是保存坐标的路径
custom_crop()

函数读取图片路径,手动截取位置,坐标会保存到json文件。然后我们只需要固定住坐标位置,进行截图。

def crop_and_save_image(image_path, save_path, x, y, width, height):
    # 读取图片
    image = cv2.imread(image_path)

    # 裁剪图像
    cropped_image = image[y:y+height, x:x+width]

    # 保存裁剪后的图像
    cv2.imwrite(save_path, cropped_image)

# 图片路径
image_path = 'test.jpg'

# 裁剪区域的坐标
x = 96  # 你填入的 x 坐标
y = 16   # 你填入的 y 坐标
width = 147  # 你填入的裁剪宽度
height = 60 # 你填入的裁剪高度

# 保存路径
save_path = 'cropped_image.png'
# 裁剪并保存图像
crop_and_save_image(image_path, save_path, x, y, width, height)
print(f"Cropped image saved to {save_path}")

函数中的4个点位置坐标,是我们从json中获取。就可以获取到指定区域的截图啦。

好用的函数,快来使用吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值