使用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 环境配置
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-边缘滤波-二值化-轮廓提取-膨胀腐蚀等