一文教会你用python裁剪图片
目录
- 如何使用python裁剪图片
- 一、 安装PIL库
- 二、构建思路
- 三、完整代码
- 总结
如何使用python裁剪图片
如上图所示,这是一张包含了各类象棋棋子的图片。我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库
实现。
一、 安装PIL库
如果此前没有安装过PIL库,在python3环境下,命令行输入 pip install pillow
即可安装完成。
二、构建思路
我们 尝试一下 ,将左上角黑色的 将 剪切下来并保存图片。
首先要打开画图,放大再放大,再勾选网格线,找到将这个棋子的 左上角坐标 和 右上角坐标 。可以看到右下角的坐标大约是(50,50)。左上角是(0,0)。因为所有图片的坐标的初始点都在左上角。
from PIL import Image img = Image.open('chess.png') ## 打开chess.png文件,并赋值给img region = img.crop((0,0,50,50))## 0,0表示要裁剪的位置的左上角坐标,50,50表示右下角。 region.save('举例.png') ## 将裁剪下来的图片保存到 举例.png
可以看到是裁剪成功了,需要注意的是,我们要将每一个棋子都裁剪下来,难道要一个一个地看坐标、修改程序中的坐标,然后一遍一遍地运行程序去裁剪图片吗?那不如直接用画图裁剪可能还快一点。我们再思考一下,会发现 每一个棋子间的间隔是有规律的 ,那我们可不可以尝试用for循环去实现批量地裁剪呢?
三、完整代码
再次打开画图,可以发现规律。第一排黑色子左上角的的坐标是(0,0),x坐标每次加50,加七次,所以是(0,0)-(300,0);右下角同理可得(50,0)-(350,0);第二排则是(0,50)-(300,50)和(50,100)-(350,100)。明白了规律之后,直接开始敲代码
from PIL import Image chessred = ['jj','ss','xx','mm','cc','pp','bb'] ##红棋命名,随便起的,不要相同就行 chessblack = ['j','s','x','m','c','p','b'] ##黑棋命名,随便起的,不要相同就行 img = Image.open('./chess.png') ## 打开chess.png,并赋值给img def cropimg(): for i,j,z in zip(range(0,350,50),chessblack,chessred): region = img.crop((i,0,i+50,50))## 裁剪第一排黑棋棋子 region.save(f'./test/{j}.png')## 保存第一排黑棋棋子 region = img.crop((i,50,i+50,100))## 裁剪第二排红棋棋子 region.save(f'./test/{z}.png')## 保存第二排红棋棋子 cropimg()
打开文件夹,所有裁剪后的图片已经被保存。
总结
到此这篇关于用python裁剪图片的文章就介绍到这了,更多相关python裁剪图片内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python图片处理之图片裁剪教程
一.操作流程 首先复制代码会吧? 1.有张照片 这是网上随便找的一张照片,自行保存测试 2.看看照片 运行代码,其中show_img函数是展示照片 3.选择角点 按照左上,右上,右下,左下的顺序选择四个角点 如果担心自己选不好,可以直接去除我代码里的points的注释,那是我自己用的原版 4.最终结果 二.代码分析 import 没什么好说的 #如果python没有安装cv2,那么就安装python-opencv就好 import cv2 as cv import numpy as np 获取图
-
Python实现图片裁剪的两种方式(Pillow和OpenCV)
在这篇文章里我们聊一下Python实现图片裁剪的两种方式,一种利用了Pillow,还有一种利用了OpenCV.两种方式都需要简单的几行代码,这可能也就是现在Python那么流行的原因吧. 首先,我们有一张原始图片,如下图所示: 原始图片 然后,我们利用OpenCV对其进行裁剪,代码如下所示: import cv2 img = cv2.imread("./data/cut/thor.jpg") print(img.shape) cropped = img[0:128, 0:512] #
-
python实现自动网页截图并裁剪图片
本文实例为大家分享了python自动网页截图并裁剪图片的具体代码,供大家参考,具体内容如下 代码: # coding=utf-8 import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from PIL import Image import os all_urls = ['http:/****edit'] def login(): chrome_option
-
OpenCV Python实现图像指定区域裁剪
在工作中.在做数据集时,需要对图片进行处理,照相的图片我们只需要特定的部分,所以就想到裁剪一种所需的部分.当然若是图片有规律可循则使用opencv对其进行膨胀腐蚀等操作.这样更精准一些. 一.指定图像位置的裁剪处理 import os import cv2 # 遍历指定目录,显示目录下的所有文件名 def CropImage4File(filepath,destpath): pathDir = os.listdir(filepath) # 列出文件路径中的所有路径或文件 for allDir i
-
python通过opencv实现图片裁剪原理解析
这篇文章主要介绍了python通过opencv实现图片裁剪原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 图像裁剪的基本概念 : 图像裁剪是指将图像中我们想要的研究区以外的区域去除,经常是按照行政区划或研究区域的边界对图像进行裁剪.例如,一张500×400的图像,我们只想要中间的250×200的区域,就可以使用图像裁剪将四周的区域去除. 在实际开发工作中,我们经常需要对图像进行分幅裁剪,按照ERDAS实际图像分幅裁剪的过程,可以将图像分
-
python openvc 裁剪、剪切图片 提取图片的行和列
python openvc 裁剪图片 下面是4个坐标代码: import cv2 #裁剪图片路径input_path,四个裁剪坐标为:y1,y2,x1,x2,保存剪裁后的图片路径output_path def cut_img(input_path,y1,y2,x1,x2,output_path): #读图片cv2.IMREAD_UNCHANGED:读入完整图片,包括alpha通道 img = cv2.imread(input_path,cv2.IMREAD_UNCHANGED) #剪裁图片img
-
详解Python+opencv裁剪/截取图片的几种方式
前言 在计算机视觉任务中,如图像分类,图像数据集必不可少.自己采集的图片往往存在很多噪声或无用信息会影响模型训练.因此,需要对图片进行裁剪处理,以防止图片边缘无用信息对模型造成影响.本文介绍几种图片裁剪的方式,供大家参考. 一.手动单张裁剪/截取 selectROI:选择感兴趣区域,边界框框选x,y,w,h selectROI(windowName, img, showCrosshair=None, fromCenter=None): . 参数windowName:选择的区域被显示在的窗口的名字
-
python实现对图片进行旋转,放缩,裁剪的功能
先说明下,我这是对某个目录下的图片名称进行操作,该目录下的图片名称为1.jpg,2.jpg.....这样类似的图片名. 1.旋转 # -*-coding:utf-8-*- from PIL import Image def rotateimg(inputimg,outimg): im = Image.open(inputimg) # 图片的宽度和高度 img_size = im.size print("图片宽度和高度分别是{}".format(img_size)) # 旋转图片 # 左
-
Python图片裁剪实例代码(如头像裁剪)
今天就来说个常用的功能,图片裁剪,可用于头像裁剪啊之类的.用的还是我们之前用的哪个模块pillow 1. 安装pillow 用pip安装 pip install pillow 2. 图片裁剪 2.1 准备一张图片 2.2 我们使用的是Image中的crop(box)功能,它需要一个参数box,元组 类型,元组包括4个元素,如: (距离图片左边界距离x, 距离图片上边界距离y,距离图片左边界距离+裁剪框宽度x+w,距离图片上边界距离+裁剪框高度y+h) 如图:(x, y, x+w, y+h), x
-
一文教会你用python裁剪图片
目录 如何使用python裁剪图片 一. 安装PIL库 二.构建思路 三.完整代码 总结 如何使用python裁剪图片 如上图所示,这是一张包含了各类象棋棋子的图片.我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现. 一. 安装PIL库 如果此前没有安装过PIL库,在python3环境下,命令行输入 pip install pillow 即可安装完成. 二.构建思路 我们 尝试一下 ,将左上角黑色的 将 剪切下来并保存图片. 首先要打开画图,放大再放大,再勾选网格线
-
python opencv对图像进行旋转且不裁剪图片的实现方法
最近在做深度学习时需要用到图像处理相关的操作,在度娘上找到的图片旋转方法千篇一律,旋转完成的图片都不是原始大小,很苦恼,于是google到歪果仁的网站扒拉了一个方法,亲测好用,再次嫌弃天下文章一大抄的现象,虽然我也是抄歪果仁的. 废话不多说了,直接贴代码了. def rotate_bound(image, angle): # grab the dimensions of the image and then determine the # center (h, w) = image.shape[
-
Python 读取xml数据,cv2裁剪图片实例
下载的数据是pascal voc2012的数据,已经有annotation了,不过是xml格式的,训练的模型是在Google模型的基础上加了两层网络,因此要在原始图像中裁剪出用于训练的部分图像. 另外,在原来给的标注框的基础上,做了点框的移动.最后同类目标存储在同一文件夹中. from __future__ import division import os from PIL import Image import xml.dom.minidom import numpy as np ImgPa
-
python 实现图片裁剪小工具
完整项目地址下载:https://github.com/rainbow-tan/rainbow/tree/master/%E8%A3%81%E5%89%AA%E5%9B%BE%E7%89%87 实现:tkinter 画布上显示图片,按下鼠标左键并且移动,实现截图 # -*- encoding=utf-8 -*- import os import tkinter as tk from PIL import Image from PIL import ImageTk left_mouse_down_
-
Python实现图片自定义裁剪小工具
目录 前言 环境依赖 代码 验证一下 前言 本文提供将图片按照自定义尺寸进行裁剪的工具方法,一如既往的实用主义. 环境依赖 ffmpeg环境安装,可以参考:在Windows上安装FFmpeg程序的图文方法 本文主要使用到的不是ffmpeg,而是ffprobe也在上面这篇文章中的zip包中. ffmpy安装: pip install ffmpy -i https://pypi.douban.com/simple 代码 不废话了,上代码. #!/user/bin/env python # codin
-
Python批量裁剪图片的思路详解
目录 需求 思路 程序 测试 需求 我的需求是批量裁剪某一文件夹下的所有图片,并指定裁剪宽高. 思路 1. 先使用PIL.Image.size获取输入图片的宽高.2.宽高除以2得到中心点坐标3.根据指定宽高,以中心点向四周拓展4.调用PIL.Image.crop完成裁剪 程序 import os from PIL import Image def crop(input_img_path, output_img_path, crop_w, crop_h): image = Image.open(i
-
Python批量图片去水印的方法
平常工作中,有时为了采用网络的一些素材,但这些素材往往被打了水印,如果我们不懂PS就无法去掉水印,或者无法批量去掉水印.这些就很影响我们的工作效率. 今天我们就一起来,用Python + OpenCV三步去除水印,去水印需要使用的库:cv2.numpy.cv2是基于OpenCV的图像处理库,可以对图像进行腐蚀,膨胀等操作:numpy这是一个强大的处理矩阵和维度运算的库. 图片去水印原理 1.标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRa
-
Python实现图片和视频的相互转换
目录 使用背景 一.视频转图像 二.图像转视频 使用背景 有时候我们需要把很多的图片合成视频,或者说自己写一个脚本去加快或者放慢视频: 也有时候需要把视频裁剪成图片,进行后续操作. 这里提供两种方法,一是视频转图像:二是图像转视频. 一.视频转图像 有时候我们需要把文件夹中的视频按照一定的帧率截取图片,如一秒取三张,为了实现这一需求,我特地编写了代码实现,并且附上了十分详细的说明,为了方便大家改代码实现自己需求(主要为了照顾刚学python的或者只需要用这一需求的小伙伴),本博文的特点如下:
随机推荐
- VBS教程:函数-UCase 函数
- DB2数据同步方面的经验
- 解决MyEclipse10.7部署报错抛空指针异常问题的方法
- Oracle 游标使用总结
- 利用js实现选项卡的特别效果的实例
- JavaScript函数节流概念与用法实例详解
- 浅析.net简单工厂模式
- 详解PHP防止直接访问.php 文件的实现方法
- php导入大量数据到mysql性能优化技巧
- android手机端与PC端使用adb forword通信
- Golang的循环中break和continue语句的用法讲解
- SpringMVC互联网软件架构REST使用详解
- ruby 类常量 解析
- Linux VPS/服务器上轻松导入、导出MySQL数据库的几种方法
- Oracle数据仓库的分层管理器解决方案开发者网络Oracle
- 基于jquery的9行js轻松实现tab控件示例
- java方法重载示例
- MAC中PyCharm设置python3解释器
- 利用原生js实现html5小游戏之打砖块(附源码)
- Django的用户模块与权限系统的示例代码