使用Python,OpenCV截取图片ROI

Posted 程序媛一枚~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python,OpenCV截取图片ROI相关的知识,希望对你有一定的参考价值。

这篇博客将介绍如何使用Python,OpenCV截取图片ROI(Regions Of Interests,即我们感兴趣的部分)。

图像在OpenCV中表现为Numpy数组,因此可以很轻松的使用数组切片来截取ROI;
roi = image[startY:endY, startX:endX],只要提供开始和结束(x,y)坐标的顺序,就可以轻松地使用OpenCV裁剪图像!

1. 效果图

原图 VS face1 VS face2 效果图如下:
在这里插入图片描述

2. 步骤

2.1 环境配置

opencv安装可参考

pip install opencv-contrib-python

2.2 原理

OpenCV将图像表示为NumPy数组,高度第一(行数),宽度第二(列数)。

roi = image[startY:endY, startX:endX]

3. 源码

# USAGE
# python opencv_crop.py --image ymzyt.jpg

# 导入必要的包
import argparse

import cv2

# 构建命令行参数及机械
# --image 磁盘图片路径,默认名称为当前py文件同级目录:fjdh.jpg
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", type=str, default="fjdh.jpg",
                help="path to the input image")
args = vars(ap.parse_args())

# 从磁盘加载图片,并展示
image = cv2.imread(args["image"])
cv2.imshow("Original", image)

# 截取面部区域,可通过Photoshop,GIMP, Paint等获取面部区域的坐标
# roi = image[startY:endY, startX:endX]
face = image[85:250, 85:220]
cv2.imshow("Face", face)
cv2.waitKey(0)

# 应用另一个裁剪,提取另一张脸
body = image[90:450, 0:290]
cv2.imshow("Body", body)
cv2.waitKey(0)

参考

以上是关于使用Python,OpenCV截取图片ROI的主要内容,如果未能解决你的问题,请参考以下文章

基于python语言的opencv如何把图片中指定区域截取出来?

使用Python,OpenCV获取更改像素,修改图像通道,剪裁ROI

opencv-python基础用法详细代码-图片加载-ROI-边缘滤波-二值化-轮廓提取-膨胀腐蚀等

OpenCV鼠标事件详解-深入理解回调函数

如何使用 Python 和 OpenCV 裁剪图像中的多个 ROI

opencv python:ROI 与 泛洪填充