小白学视觉 | Python — 将非方形图像转换为方形图像

本文来源公众号“小白学视觉”,仅用于学术分享,侵权删,干货满满。

原文链接:Python — 将非方形图像转换为方形图像

使用 CV2 在 Python 中以编程方式完成如下操作:将非方形图像转换为方形图像。

因此,6 年来,我第一次将一些图片上传到 Instagram。我画了一些愚蠢的漫画,想上传它来娱乐一下。然而,问题:

  • 我有 10 张图片要上传

  • 每个图像都有不同的尺寸

  • Instagram 会自动将你的图像 (ew) 裁剪为:

    1. 方形

    2. 4:5 纵横比

    3. 9:16 纵横比

所以我需要一种方法来为我的图像添加白色填充,使它们都是正方形。

以下是我如何使用 Python 实现的:

文件夹结构

- myimages- 1.png- 2.png- 3.png- 4.png- 5.png- 6.png
run.py

安装依赖

pip install opencv-python

完整代码

# run.pyimport cv2
import os# replace this with your own folder name
# your folder should contain all images you want to squarify
folder = 'yourfolder'new_folder = f'{folder}_new'
if not os.path.exists(new_folder):os.mkdir(new_folder)for filename in os.listdir(folder):if '.png' not in filename.lower():continuefilepath = f'{folder}/{filename}'img = cv2.imread(filepath)h, w = img.shape[:2]px, py = 0, 0if h > w:px = (h-w)//2elif h < w:py = (w-h)//2newimg = cv2.copyMakeBorder(img, py, py, px, px, borderType=cv2.BORDER_CONSTANT, value=[255,255,255])cv2.imwrite(f'{new_folder}/{filename}', newimg)

代码中发生了什么

import cv2
import os# replace this with your own folder name
# your folder should contain all images you want to squarify
folder = 'myimages'# name of folder the NEW images will be in
new_folder = f'{folder}_new'# if this folder doesn't exist, create it
if not os.path.exists(new_folder):os.mkdir(new_folder)# looping through all images in our folder
for filename in os.listdir(folder):# ignoring anything that isn't an image# rememeber to change this is you're using jpg or something elseif '.png' not in filename.lower():continuefilepath = f'{folder}/{filename}'# reading the image using cv2.imread# img is a numpy 3d arrayimg = cv2.imread(filepath)# extracting height/width of imageh, w = img.shape[:2]# px --> number of padding pixels to add on left/right# py --> number of padding pixels to add on top/bottompx, py = 0, 0# checking if image height is more than image widthif h > w:# calculating pixels to add to left/right# py will be 0px = (h-w)//2elif h < w:# calculating pixels to add to top/bottom# py will be 0py = (w-h)//2# creating new image with paddingnewimg = cv2.copyMakeBorder(img, py, py, px, px, borderType=cv2.BORDER_CONSTANT, value=[255,255,255]  # white (change this if you want other colors))# saving our imagecv2.imwrite(f'{new_folder}/{filename}', newimg)

运行后的结果文件夹结构

- myimages- 1.png- 2.png- 3.png- 4.png- 5.png- 6.png
- myimages_new- 1.png- 2.png- 3.png- 4.png- 5.png- 6.png
run.py

运行我们的 Python 脚本后,该myimages_new文件夹会自动生成。对于myimages中的每张图片,都会在myimages_new 中生成对应的同名正方形图片。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144742.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

monorepo基础搭建教程(从0到1 pnpm+monorepo+vue)

monorepo 前言1、搭建空项目并配置pnpm-workspace.yamlpnpm initpnpm-workspace.yaml 2.配置packages测试文件配置相关内容 3.引入packages内容至公共package.json4.创建测试项目&#xff0c;并引入公共包结语 前言 有个项目要引入一个第三方库&#xff0c;但是第三方库下载下…

(笔记)mac笔记本调节键盘速率

我在使用neovim的时候&#xff0c;发现按下hjkl或者shift[]来进行移动的时候 开始延迟大概几百毫秒的时间才开始移动 所以我上网找了下方法 发现修改这了可以改变速率 我就直接拉到了fast 芜湖 起飞 local opt vim.opt local o vim.o local g vim.go.timeoutlen 100 o…

多路径文件批量下载工具V1.0.3-支持批量下载文件到单独文件夹的工具-供大家学习研究参考

1、支持批量下载列表文件中的所有文件到每个文件指定的目录下。 2、支持TXT文件导入。 3、支持TXT文件拖入。 4、支持下载错误文件筛选导出。 5、支持单文件多线程下载。 6、其它功能还在开发中。 7、支持断点续传。 8、支持递归下载&#xff08;递归下载就是按照服务器目录结构…

实战18-Card封装

import Card from ../../components/Card/Index; import rvp from ../../utils/resposive/rvIndex;Component export default struct DomesticService {build() {Column() {Card() {//默认插槽Text("DomesticService")}}.width(100%).margin({ top: rvp(43) })} } im…

高效处理NPE!!

相信不少小伙伴已经被java的NPE(Null Pointer Exception)所谓的空指针异常搞的头昏脑涨,有大佬说过“防止 NPE&#xff0c;是程序员的基本修养。”但是修养归修养&#xff0c;也是我们程序员最头疼的问题之一&#xff0c;那么我们今天就要尽可能的利用Java8的新特性 Optional来…

Ubuntu22.04安装paddle

查看系统版本信息 使用命令lsb_release -a查看系统版本 rootLAIS01:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammy查看系统支持的cuda版本&#xff0c;使用命令nvidia-smi&#…

开源免费的NAS系统-TrueNAS CORE搭建和使用(保姆级教程)

TrueNAS CORE说明 TrueNASCORE(以前称为 FreeNAS)是世界上最受欢迎的存储操作系统,因为它使您能够构建自己的专业级存储系统,用于各种数据密集型应用程序,而无需任何软件成本。只需将其安装到硬件或虚拟机上,即可体验开源存储的真正存储自由。 TrueNAS提供了CORE和Ente…

HTML基础和常用标签

“合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;1. HTML的基本结构解释&#xff1a; 2. 常见标签的介绍2.1 标题和文本2.2 链接和图片2.3 列表2.4 …

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 &#xff08;SCA&#xff09; 工具&#xff0c;可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 &#xff08;CPE&#xff09; 标识符来实现此目的。如果找到&#xff0c;它…

SSL证书安装、配置和问题定位指南

在运维或者实际的部署、开发&#xff0c;可能涉及到ssl证书相关的问题&#xff0c;尤其前端有些能力&#xff08;摄像头、webrtc&#xff09;等需要在安全的上下文才能使用&#xff0c;cookie的跨iframe生效也需要。关于如何生成和部署证书&#xff0c;很多文字都有介绍&#x…

SaltStack自动化运维部署

一.什么是SaltStack SaltStack是一个服务器基础设施管理工具&#xff0c;它具有配置管理&#xff0c;远程执行&#xff0c;监控等功能&#xff0c;SaltStack由Python语言编写&#xff0c;是非常简单易用和轻量级的管理工具。 二.为什么使用SaltStack 为同时管理多台机器&…

主机和Docker容器之间的文件互传方法汇总

Docker渐渐成为前端的一个工具&#xff0c;它像一个通用包装&#xff0c;可以把各种环境包裹其中&#xff0c;从而实现跨设备的兼容。使用的过程中&#xff0c;往往会需要将本地的文件和docker容器内部的文件互传&#xff1a;将主机的文件传递给容器内&#xff0c;让里面的工具…

向日葵好用吗?4款稳定的远程控制软件推荐。

远程控制技术现在已经被应用于很多个领域&#xff0c;像企业办公&#xff0c;远程协助&#xff0c;智能家居&#xff0c;工业控制等等。我们常常会用到的时前两种。而实现远程控制的方式也有多种&#xff0c;但是最方便高效的还是使用第三方软件。我最常使用的是向日葵&#xf…

城市脉络下的空间句法:中介中心性、接近中心性与绕行率的深度解析

这一篇是对上篇内容的继续深化&#xff0c;也就是sDNA “整体分析”&#xff08;Integral Analysis&#xff09;计算结果代表的意思&#xff0c;有哪些&#xff1f;意义是什么&#xff1f; 上篇文章指路&#xff1a;城市脉络下的空间句法&#xff1a;整合度与选择度的深度解析…

vue实现二维码生成器应用

实现一个简单的二维码生成器应用&#xff0c;可以使用 Vue 前端结合一个 JavaScript 库&#xff08;如 qrcode.js 或 QRCode.js&#xff09;来生成二维码。以下是一个完整的实现步骤&#xff1a; 步骤 1&#xff1a;安装依赖 首先&#xff0c;你需要安装 qrcode 库&#xff0c…

Unity教程(十六)敌人攻击状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

macOS平台编译MAVSDK源码生成mavsdk库与mavsdk_server服务可执行文件

克隆源码: 克隆命令 git clone https://github.com/mavlink/MAVSDK.git --recursive 克隆成功如下: 生成makefile (只生成mavsdk库) cmake -Bbuild/default -DCMAKE_BUILD_TYPE=Debug -H. 指定安装目录与生成目录: cmake -Bbuild/macos -DCMAKE_BUILD_TYPE=Debug -…

pg入门3—详解tablespaces2

pg默认的tablespace的location为空&#xff0c;那么如果表设置了默认的tablespace&#xff0c;数据实际上是存哪个目录的呢? 在 PostgreSQL 中&#xff0c;如果你创建了一个表并且没有显式指定表空间&#xff08;tablespace&#xff09;&#xff0c;或者表空间的 location 为…

面试官问:你如何处理与同事或上级的分歧?【无标题】

面试官问&#xff1a;你如何处理与同事或上级的分歧&#xff1f; 当面试官问你如何处理与同事或上级的分歧&#xff0c;其实面试官的目的是评估你的沟通技巧、冲突解决能力和团队合作的能力。在一起共事&#xff0c;就一定有分歧发生&#xff0c;有争执是正常的&#xff0c;关…

OJ在线评测系统 思考主流OJ的实现方案 常用概念 自己的思考

OJ判题系统常用概念 OJ系统 在线判题系统 AC all accpeted 测试样例全部通过 题目介绍 题目输入 题目输出 题目输出用例 题目输入用例 不能让用户随便引入包 随便遍历 暴力破解 需要使用正确的算法 提交后不会立刻出结果 而是异步处理 提交后会生成一个提交记录 有运…