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中文问题解决方法(总结了多位前人经验,初学者必看)
Mar 13 Python
Python中super的用法实例
May 28 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
python简单商城购物车实例代码
Mar 15 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Python3中bytes类型转换为str类型
Sep 27 Python
python pygame模块编写飞机大战
Nov 20 Python
给Python学习者的文件读写指南(含基础与进阶)
Jan 29 Python
python numpy实现rolling滚动案例
Jun 08 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
Python实现Matplotlib,Seaborn动态数据图
May 06 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垃圾回收机制对内存泄露的处理
2013/06/14 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
2014/09/26 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
jQuery siblings()用法实例详解
2016/04/26 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
python 3.7.4 安装 opencv的教程
2019/10/10 Python
python实现批量转换图片为黑白
2020/06/16 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
英国日常交易网站:Wowcher
2018/09/04 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
高级销售员求职信
2013/10/25 职场文书
合伙经营协议书
2014/04/18 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
英文版辞职信
2015/02/28 职场文书
中学社团活动总结
2015/05/07 职场文书
第一军规观后感
2015/06/12 职场文书
golang的文件创建及读写操作
2022/04/14 Golang