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列表推导式的使用方法
Nov 21 Python
python计算最大优先级队列实例
Dec 18 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
python 链接和操作 memcache方法
Mar 04 Python
Python迭代器和生成器定义与用法示例
Feb 10 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
python Selenium 库的使用技巧
Oct 16 Python
如何通过python计算圆周率PI
Nov 11 Python
python实现手机推送 代码也就10行左右
Apr 12 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
php URL编码解码函数代码
2009/03/10 PHP
浅析关于PHP位运算的简单权限设计
2013/06/30 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
HR vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
js模糊查询实例分享
2016/12/26 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python实现删除文件但保留指定文件
2015/06/21 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
销售总监岗位职责
2014/01/04 职场文书
邮政员工辞职信
2014/01/16 职场文书
大学生自我鉴定书
2014/03/24 职场文书
销售代理协议书
2014/09/30 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
Python开发五子棋小游戏
2022/05/02 Python