python通过opencv实现图片裁剪原理解析


Posted in Python onJanuary 19, 2020

这篇文章主要介绍了python通过opencv实现图片裁剪原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

图像裁剪的基本概念 :
图像裁剪是指将图像中我们想要的研究区以外的区域去除,经常是按照行政区划或研究区域的边界对图像进行裁剪。例如,一张500×400的图像,我们只想要中间的250×200的区域,就可以使用图像裁剪将四周的区域去除。

在实际开发工作中,我们经常需要对图像进行分幅裁剪,按照ERDAS实际图像分幅裁剪的过程,可以将图像分幅裁剪分为规则分幅裁剪和不规则分幅裁剪两种类型。

规则分幅裁剪:指裁剪图像的边界范围是一个矩形。裁剪时只需要通过左上角和右下角两点的坐标,就可以确定图像的裁剪位置。

不规则分幅裁剪:指裁剪图像的边界范围是任意多边形,裁剪时必须首先生成一个完整的闭合多边形区域。

图像裁剪的OpenCV实现

规则分幅裁剪:

python通过opencv实现图片裁剪原理解析

在OpenCV中,图像被看成矩阵数据,我们将图像视为多维list,因为规则分幅裁剪的边界范围是一个矩形,所以我们可以根据列表切片来实现图像的规则分幅裁剪。现在,我们来实现将500×400的图像中间的250×200的区域裁剪出来。

计算图如下:

import cv2
img = cv2.imread("500x400.jpg")
img1=img[100:300,125:375] #需要保留的区域--裁剪
#参数1 是高度的范围,参数2是宽度的范围

cv2.imwrite("linsi.jpg",img1)
cv2.waitKey(0)

效果图:

python通过opencv实现图片裁剪原理解析

不规则分幅裁剪

对于不规则分幅裁剪,首先得生成一个完整的闭合多边形区域。假设我们现在要将图像裁剪成一个圆形图像,那么我们就得首先生成一个圆形。OpenCV中为我们提供了专门用于画圆形图的方法circle

,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值

Python 相关文章推荐
Python break语句详解
Mar 11 Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
python中map的基本用法示例
Sep 10 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
May 30 Python
Python datetime包函数简单介绍
Aug 28 Python
PyTorch 对应点相乘、矩阵相乘实例
Dec 27 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
一篇文章弄懂Python中的内建函数
Aug 07 Python
Python中的pprint模块
Nov 27 Python
Python 一行代码能实现丧心病狂的功能
Jan 18 #Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 #Python
Pytorch 实现数据集自定义读取
Jan 18 #Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 #Python
selenium 多窗口切换的实现(windows)
Jan 18 #Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 #Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 #Python
You might like
php 不同编码下的字符串长度区分
2009/09/26 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
PDO::prepare讲解
2019/01/29 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
网页javascript精华代码集
2007/01/24 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
IScroll5 中文API参数说明和调用方法
2016/05/21 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JavaScript动态添加数据到表单并提交的几种方式
2019/06/26 Javascript
加速vue组件渲染之性能优化
2020/04/09 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
python3 使用traceback定位异常实例
2020/03/09 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python collections模块的使用方法
2020/10/09 Python
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
委托书如何写
2014/08/30 职场文书
学习退步检讨书
2014/09/28 职场文书
汽车转让协议书范本
2014/12/07 职场文书
行政处罚告知书
2015/07/01 职场文书
古诗之感恩老师
2019/10/24 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android