Python中切分图片的操作是怎样
Admin 2022-08-12 群英技术资讯 1108 次浏览
今天小编跟大家讲解下有关“Python中切分图片的操作是怎样”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。之前下载来zip包的漫画,里面的图片都是两张一起的:

但是某些漫画查看软件不支持自动分屏,看起来会比较不舒服,所以只能自己动手来切分。
Python有不少的库支持图片操作,其中比较著名的一个是OpenCV。
OpenCV是一个跨平台的计算机视觉库,Python下有它的接口实现。
Python默认不带OpenCV,所以需要先用pip下载:

OpenCV功能强大,这里用来做图片的切分其实是牛刀小试。
关于OpenCV的功能,这里不多介绍,有兴趣的可以找其它的资料。
为了在代码中使用OpenCV,首先需要import相关的库:
import cv2 # Should be install independently.
然后是读取图片:
img1 = cv2.imread(filename)
然后做切割:
# shape[0]:height shape[1]:width shape[2]:channel
# img[y0:y1, x0:x1] 0=(left up) 1=(right low)
slice1 = img[0:height, width/2:width]
这里实际上就是指定图片框体,需要的两个值是左上角和右下角坐标,只是对应的方式有些诡异,不知道为什么要这样对应。
然后是回写图片:
cv2.imwrite(getname(index1), slice1, [int(cv2.IMWRITE_PNG_COMPRESSION), 1])
此外,为了保证图片不会太大,还可以做些压缩:
img = cv2.resize(img1, (0, 0), fx=compressratio, fy=compressratio, interpolation=cv2.INTER_NEAREST)
以上就是涉及到图片的基本代码。
下面是全部的代码,将它保存到py文件中,然后与图片放到同一个目录,双击py文件就可以执行,并进行图片切分:
#!/usr/bin/env python
# ---------------------------------------------------------------------------------
# coding=utf-8
# @File : sliceImage.py
# @Author : Jiangwei
# @Date : 2020/4/18
# @Desc : Slice images.
# @History :
# Date Author Description
# 20200418 Jiangwei Created.
# @Warning:
# Tested in Python 2.7.
# ---------------------------------------------------------------------------------
import os
import sys
import cv2 # Should be install independently.
todir = "tmp"
exts = ['.jpg', '.JPG', '.png', '.PNG']
compressratio = 0.75
def listimage(adir):
'''
adir : The directory name.
'''
list = []
for i in os.listdir(adir):
if os.path.splitext(i)[1] in exts:
list.append(os.path.join(adir, i))
return list
def getname(index):
page = "Image%03d.png" % index
return os.getcwd() + "\\" + todir + "\\" + page
def doslice(filename, index1, index2):
img1 = cv2.imread(filename)
img = cv2.resize(img1, (0, 0), fx=compressratio, fy=compressratio, interpolation=cv2.INTER_NEAREST)
height,width = img.shape[0:2]
# shape[0]:height shape[1]:width shape[2]:channel
# img[y0:y1, x0:x1] 0=(left up) 1=(right low)
slice1 = img[0:height, width/2:width]
cv2.imwrite(getname(index1), slice1, [int(cv2.IMWRITE_PNG_COMPRESSION), 1])
print getname(index1)
slice2 = img[0:height, 0:width/2]
cv2.imwrite(getname(index2), slice2, [int(cv2.IMWRITE_PNG_COMPRESSION), 1])
print getname(index2)
return
if __name__ == "__main__":
'''
Slice images.
'''
# Temperature directory for sliceped images.
if not os.path.exists(todir):
os.mkdir(todir)
# Transverse all files and do the slice.
imagelist = listimage (os.getcwd())
index = 1
for i in imagelist:
print "Processing %s" % i
doslice(i, index, index + 1)
index += 2
切分之后的文件会放到新创建的tmp目录下。
下面是切换之后的效果:

代码写得不怎么样,不过能够用......
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
当我们用python进行数据处理时会遇到很多缺失值,缺失值一般是由于我们所处理的数据本身的特性、当初录入的失误或者其它原因导致的,下面这篇文章主要给大家介绍了关于pandas返回缺失值位置的方法,需要的朋友可以参考下
这篇文章主要介绍了pytorch部署到jupyter中,在这里需要注意我再输入的时候出现了一些无法定位的提示,但是我的电脑没有影响使用jupyter,还是可以使用jupyter并且可以import torch,本文给大家讲解的非常详细,需要的朋友参考下吧
这篇文章主要为大家介绍了python密码学黑客攻击RSA密码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
应用场景举例描述: Lock 互斥锁:举例说明-C有三个同事同时需要上厕所,但是只有一间厕所,将同事比作进程,多个进程并打抢占一个厕所,我们要保证顺序优先, 一个个来,那么就必须串行,先到先得,有人使用了,就锁住,结束后剩余的人继续争抢
在编写代码的时候,经常会出现写的代码存在一些问题,但是比较难以发现具体存在的问题在哪里,需要将带代码恢复到指定的版本,下面这篇文章主要给大家介绍了关于pycharm中代码回滚到指定版本的两种实现方法,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008