05 | 图像处理库:如何实现长图拼接?
05 | 图像处理库:如何实现长图拼接?
讲述:尹会生
时长14:47大小13.51M
Python 是如何调用外部命令的
长图拼接
视频的拆分与合并
小结
思考题
赞 10
提建议
精选留言(14)
- SWC6032021-03-20老師,是否可以利用python 一次過批量更改excel中的公司logo? 因原有excel 檔中公司logo更改了新設計。 謝謝你!
作者回复: 你好,对于excel中的图片处理,步骤比较多,但是操作不难。 首先你需要将excel文件的扩展名改成zip格式, 然后对zip格式进行解压缩 利于我在后面讲解的遍历文件的方式找到图片,并替换成新的图片 最后,再将文件夹打包回zip并重命名为xlsx
6 - 小匚2021-02-20弱弱的问一句Windows用户可以不?
作者回复: Windows是不行的哦,这个软件是 Linux和MAC下边实现 photoshop的一个工具,主打的就是通过命令行进行批量处理。在windows下想实现这种功能,可以使用photoshop的“动作”来完成。
共 3 条评论3 - 天国之影2021-12-08Windows下的长图拼接代码示例(安装ImageMagick软件,安装参考博客:https://blog.csdn.net/qq_37674858/article/details/80361860): from pathlib import Path, PurePath from subprocess import run jpg_path = 'data/ch04' result_path = 'data/ch04/result.jpg' p = Path(jpg_path) # 使用命令 cmd = ['magick', 'convert', '-append'] # 增加参数 for x in p.iterdir(): if PurePath(x).match('*.jpg'): cmd.append(x) # 增加拼接结果 cmd.append(result_path) run(cmd, shell=True)展开共 1 条评论1
- 彭宏豪952021-06-30老师好,长图拼接如果要设置图片拼接的先后顺序,是不是图片命名要规范一些,比如出现数字 1、2、3、4 之类的,然后书写的 python 程序也要添加相应的参数呢?
作者回复: 你好,要考虑拼接顺序,确实是需要在文件名做文章的。 这也是命令行工具能够批量化但是没有可视化工具人性化的地方,有取有舍
1 - 小姬葐2023-01-03 来自湖北使用PIL模块进行图片拼接,window10 ,Python3.9 ,代码如下 from PIL import Image from pathlib import Path def image_urls(img1,img2): #对参数进行判断 if Path(img1).is_file() and Path(img2).is_file()and img1.endswith("*.jpg") and img2.endswith("*.jpg"): #读取图片尺寸 row_image = Image.open(img1) width,height = row_image.size #读取第二张图片 row_image_1 = Image.open(img2) width1,height1 = row_image_1.size #创建新图片,长度为原来长度,高度为2张图片之和 to_image = Image.new("RGB",(width,height+height1)) #将2张图片按坐标贴到对应的位置上 to_image.paste(row_image,(0,0)) to_image.paste(row_image_1,(0,height)) #保存图片 to_image.save("new.jpg") else: return "图片格式非法" r1 =r'C:\Users\think\Desktop\Python_Excel\img\1.jpg' r2 = r'C:\Users\think\Desktop\Python_Excel\img\2.jpg' image_urls(r1,r2)展开
- stark2022-05-11拼接长图的那个没有成功 ,错误提示FileNotFoundError: [Errno 2] No such file or directory: 'composite', from pathlib import Path, PurePath from subprocess import run jpg_path = '/Users/stark/Desktop/long_pic'; p = Path(jpg_path) # 增加命令 cmd = ["composite","/Users/stark/Desktop/long_pic/WechatIMG427.jpeg","/Users/stark/Desktop/long_pic/WechatIMG431.jpeg"] for x in p.iterdir() : if PurePath(x).match('*.jpeg'): print(x); result_path = '/Users/stark/Desktop/long_pic/result.jpeg'; cmd.append(result_path) run(cmd)展开
- data2022-04-15请问下老师 , Mac下 from subprocess import run cmd1 = ["ls", "."] returncode = run("ls", ".", shell=True) print(returncode) ImportError: cannot import name 'run' from 'subprocess'展开
- Geek_d4577b2022-04-04老师,课程无代码包里,没有拼接图片的代码,能补充一下吗
编辑回复: 开篇词、01-03文章底部都有链接 专栏的完整代码位置是https://github.com/wilsonyin123/python_productivity,可点击链接下载查看。 或者通过网盘链接提取后下载,链接是: https://pan.baidu.com/s/1UvEKDCGnU6yb0a7gHLSE4Q?pwd=5wf1,提取码: 5wf1。
- somenzz2021-07-08能否提供下不借助 subprocess 调用外部工具合并长图的代码啊,我这里是 Windows 用户。
作者回复: windows可以使用subprocess但不可使用fork,是不是文章中的描述给你造成了误解? 参考地址 https://docs.python.org/zh-cn/3/library/subprocess.html
共 2 条评论 - 范2021-04-08借助于subprocess库,等同于后台执行windows平台的命令行工具,只不过是将命令行参数封装到代码里。能做范围比较广,可以是执行电脑已安装软件,也可以执行自定义的功能(比如开发的exe文件)
- 赤い悪魔2021-03-08MacOS cmd1 = ["ls", "."] returncode = run(cmd1) 报错,替换了 returncode = run('ls', '.', shell=True)
作者回复: 我解释一下报错的原因,是因为ls命令在运行的时候需要环境变量,而环境变量是存在于shell中的。所以需要增加shell=True。
- xiaocao2021-02-21另外问一下:外部命令还可以调用哪些?如何查找和学习?
作者回复: 外部命令功能,可以调用任何命令行执行的命令,最常见的就是文件操作类命令, windows可以通过cmd命令作为关键字搜索,mac可以通过shell脚本作为关键字搜索到
- 梁健2021-02-20我客观地说个存在的问题,您使用Mac OS的操作系统下的 ImageMagick进行教学,这给我们这些windows用户带来很多的不方便,命令行执行上这两个系统的命令完全不一样(哭了),我找了好多教程都没找到好的解决办法。希望后面的内容还是能够多在Windows上做。ps:今天这课是学的到现在最烦燥的一节(痛彻心扉)。
作者回复: 先不要痛彻心扉,我在这节课主要想把调用外部命令的方式交给你,windows下也有很多软件支持命令行的,最常见的就是文件和文件夹的操作命令。你可以通过搜索引擎搜索windows 命令行自带的命令,来找到他们。在我工作的早期,接触的服务器大部分就是windows的操作系统,我需要进行定时任务和各种复杂任务的编排的时候,都会通过cmd命令行的命令来完成。有了Python进行封装之后,这些命令肯定更好用了。你可以去了解一下。
- Soul of the Drago...2021-02-20同问,请问上面的代码仅适用于macOS操作系统吗?