python cv2 封装 拍照截取旋转翻转 为一个函数

该博客介绍了一个Python函数,利用OpenCV库从摄像头捕获图像并进行处理,包括按需进行水平或垂直翻转、90度旋转以及指定区域裁剪。此外,还提供了不同参数设置以实现不同效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的方法实现了,从摄像头获取图片,并根据条件翻转或旋转

import cv2
# flip_x, flip_y 分别决定了是否进行x轴翻转 y轴翻转
# clip = (x,y,w,h);左上角坐标及宽高 决定了要裁剪的方形区域; 不进行裁剪则全部置0
# rotate: 0不旋转; 1 顺时针转90度; 2 旋转180度; -1 逆时针旋转90度
def take_picture(flip_x=False, flip_y=False, clip=(0, 0, 100, 100), rotate=0):
	clip_x, clip_y, clip_w, clip_h = clip
    cap = cv2.VideoCapture(0)
    # print("set pic width: ", cap.set(3, 3664))
    # print("set pic height: ", cap.set(4, 2748), rotate, flip_x)
    res, frame = cap.read()
    cap.release()
    if res:
        cv2.imwrite("images/origin.png", frame)
        if flip_x:
            frame = cv2.flip(frame, 1)
        if flip_y:
            frame = cv2.flip(frame, 0)
        if rotate:
            frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE if rotate == 1 else cv2.ROTATE_90_COUNTERCLOCKWISE if rotate == -1 else cv2.ROTATE_180)
        if flip_x or flip_y or rotate:
            cv2.imwrite("images/res_rotate", frame)
        if clip_x or clip_y or clip_w or clip_h:
            img = frame[clip_y: clip_y + clip_h, clip_x: clip_x + clip_w]
            cv2.imwrite("images/res_clip.png", img)
        else:
            cv2.imwrite("images/res_clip.png.png", frame)
        return True
    else:
        return False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值