当前位置: 首页 > news >正文

【Python】转换得到图片的rgb565格式数据

使用方法:首先在代码同级目录创建input_images文件夹,然后将需要转换的图片放进去。
然后根据你的需要,修改代码最下面的crop_size、resize以及file_name。
最后点击运行,即可得到图片的rgb565格式数据

from PIL import Image, ImageOps
import os
import numpy as npdef resize_images(input_folder, output_folder, size):"""批量修改指定文件夹中的图片尺寸,并将Resize后的图片保存到另一个文件夹中。:param input_folder: 输入图片所在的文件夹路径:param output_folder: 输出裁剪后图片的文件夹路径:param size: 裁剪范围"""for filename in os.listdir(input_folder):if filename.endswith(".jpg") or filename.endswith(".png"):img = Image.open(os.path.join(input_folder, filename))img_resized = ImageOps.fit(img, size)img_resized.save(os.path.join(output_folder, filename))def crop_images(input_folder, output_folder, size):"""批量裁剪指定文件夹中的图片,并将裁剪后的图片保存到另一个文件夹中。:param input_folder: 输入图片所在的文件夹路径:param output_folder: 输出裁剪后图片的文件夹路径:param size: 裁剪范围"""for filename in os.listdir(input_folder):if filename.endswith(".jpg") or filename.endswith(".png"):img = Image.open(os.path.join(input_folder, filename))cropped_img = img.crop((size[0], size[1], size[2], size[3]))cropped_img.save(os.path.join(output_folder, filename))def rgb565_to_uint16(r, g, b):return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3)def generate_image_data(folder_path, image_name):image_files = [f for f in os.listdir(folder_path) if f.endswith('.jpg') or f.endswith('.png')]data = []for file in image_files:img = Image.open(os.path.join(folder_path, file))image_name.append(os.path.splitext(file)[0])img = img.convert('RGB')width, height = img.sizeimage_data = np.zeros((height, width), dtype=np.uint16)for y in range(height):for x in range(width):r, g, b = img.getpixel((x, y))image_data[y][x] = rgb565_to_uint16(r, g, b)data.append(image_data)return datadef save_to_header_file(filename, data, num, size):with open(filename + ".h", 'w') as c_file:c_file.write("#include <pgmspace.h>\n\n")c_file.write("// Image name order:\n")for name in image_name:c_file.write(f"// {name}\n")c_file.write(f"const size_t image_size = {num};\n\n")c_file.write(f"const uint16_t PROGMEM image[][{size[0]*size[1]}")c_file.write("] = {\n")for index in range(0, num):c_file.write("{")for row in data[index]:for value in row:c_file.write(f"0x{value:04X}, ")c_file.write("},\n")c_file.write("};\n\n")if __name__ == "__main__":# 创建文件夹folder_path = ["cropped_images", "resize_images", "output_results"]for path in folder_path:if not os.path.exists(path):os.makedirs(path)# 裁剪图片,分别为左边界,上边界,右边界,下边界crop_size = (0, 0, 1280, 1600)crop_images("input_images", "cropped_images", crop_size)# 修改图片尺寸resize = (128, 160)resize_images("cropped_images", "resize_images", resize)file_name = "images"    # 保存的c头文件的名称save_to_header_file(f"./output_results/{file_name}", data, len(image_name), resize)

相关文章:

【Python】转换得到图片的rgb565格式数据

使用方法&#xff1a;首先在代码同级目录创建input_images文件夹&#xff0c;然后将需要转换的图片放进去。 然后根据你的需要&#xff0c;修改代码最下面的crop_size、resize以及file_name。 最后点击运行&#xff0c;即可得到图片的rgb565格式数据 from PIL import Image, I…...

隨筆 20241024 Kafka中的ISR列表:分区副本的族谱

在分布式系统中&#xff0c;数据的一致性和可靠性至关重要。Apache Kafka作为一个强大的流处理平台&#xff0c;利用其分区和副本机制来确保这些特性。在Kafka中&#xff0c;ISR&#xff08;In-Sync Replicas&#xff09;列表是一个关键概念&#xff0c;它用来追踪与领导者副本…...

【python】爬虫

下载与批量下载 import requests #第三方库&#xff0c;没有下载的下载一下 pip install requests#爬虫下载图片 resrequests.get("url") print(res.content)#二进制字节流#写文件 with open("beauty.jpg","wb")as f:f.write(res.content)#批量…...

大语言模型数据类型与环境安装(llama3模型)

文章目录 前言一、代码获取一、环境安装二、大语言模型数据类型1、基本文本指令数据类型2、数学指令数据类型3、几何图形指令数据类型4、多模态指令数据类型5、翻译指令数据类型三、vscode配置四、相关知识内容1、理解softmax内容2、torch相关函数nn.Embedding函数torch.nn.fun…...

JS:列表操作

目录 1、列表截取2、列表数据包含3、列表筛选4、极值操作5、获取列表对象某一属性构建列表6、获取元素在列表中的下标7、列表去重 1、列表截取 列表截取&#xff1a;List.slice(start, end)&#xff0c;左闭右开 var dataList [1,2,3,4,5,6] var resultList dataList.slice(0…...

ECharts 折线图 / 柱状图 ,通用配置标注示例

option {tooltip: { // 关于提示框&#xff08;tooltip&#xff09;的配置// 显示某一个去掉trigger: axis&#xff0c;显示一起显示 trigger: axistrigger: axis},legend: {top: bottom, // 显示标注位置// textStyle: {// color: "#000", // 设置图例文字颜…...

统计数据集的TXT、XML及JSON标注文件中各类别/每个标签的数量

在计算机视觉和深度学习领域&#xff0c;标注文件是模型训练的重要组成部分。无论是图像分类、目标检测还是图像分割&#xff0c;正确的标注能够显著提升模型的性能。在实际应用中&#xff0c;我们需要快速了解每个类别的样本数量&#xff0c;以便进行数据分析、平衡类别分布或…...

Facebook登录客户追踪:了解用户访问路径,优化客户体验

随着数字化转型的不断加速&#xff0c;精准的客户数据收集和用户行为追踪成为企业提升用户体验和优化业务流程的关键。Facebook登录作为一种便捷的第三方登录方式&#xff0c;已经被广泛应用于各类网站和应用中。它不仅简化了用户的注册与登录流程&#xff0c;还帮助企业获得用…...

NUUO摄像头 debugging_center_utils 远程命令执行漏洞复现

0x01 产品描述&#xff1a; ‌ NUUO摄像头‌是由中国台湾NUUO公司生产的一款网络视频录像机&#xff08;Network Video Recorder&#xff0c;简称NVR&#xff09;&#xff0c;广泛应用于零售、交通、教育、政府和银行等多个领域。它能够同时管理多个IP摄像头&#xff0c…...

Nginx 的讲解和案例示范

一、基础理解 1.1 Nginx 是什么&#xff1f; Nginx是一个高性能的 Web 服务器和反向代理服务器&#xff0c;同时也可以作为邮件代理服务器。Nginx 以其高并发处理能力、低内存消耗和丰富的功能受到广泛欢迎。 主要功能&#xff1a; 静态资源服务&#xff1a;高效地提供 HTM…...

微信小程序元素水平居中或垂直居中

最近在做一个微信小程序的项目&#xff0c;其中涉及到css样式实现将<navigator>标签内的图片和文本元素垂直排列&#xff0c;并水平居中。在尝试实现的过程中&#xff0c;将元素在标签内的所有排列情况都顺带实现了。上代码&#xff1a; index.wxml <navigator url&…...

ClickHouse 神助攻:纽约城市公共交通管理(MTA)数据应用挑战赛

本文字数&#xff1a;13198&#xff1b;估计阅读时间&#xff1a;33 分钟 作者&#xff1a;The PME Team 本文在公众号【ClickHouseInc】首发 我们一向对开放数据挑战充满热情&#xff0c;所以当发现 MTA&#xff08;城市交通管理局&#xff09;在其官网发起了这样的挑战时&…...

ELK + Filebeat + Spring Boot:日志分析入门与实践(二)

目录 一、环境 1.1 ELKF环境 1.2 版本 1.3 流程 二、Filebeat安装 2.1 安装 2.2 新增配置采集日志 三、logstash 配置 3.1 配置输出日志到es 3.2 Grok 日志格式解析 3.2 启动 logstash ​3.3 启动项目查看索引 一、环境 1.1 ELKF环境 springboot项目&#xff1a;w…...

使用 Docker Compose 将数据版 LobeChat 服务端部署

LobeChat 是一个基于 TypeScript 的开源聊天机器人项目&#xff0c;支持本地部署和接入多个大语言模型。本文介绍如何使用 Docker Compose 将 LobeChat 服务端及其数据库部署到生产环境&#xff0c;让您拥有一个私有化的、可定制的 AI 聊天助手。 一、部署前准备 服务器&…...

python如何完成金融领域的数据分析,思路以及常见的做法是什么?

引言 在现代金融领域,数据分析已成为决策支持的重要工具。随着金融市场的复杂性和数据量的激增,传统的分析方法已无法满足需求。 Python作为一种强大的编程语言,凭借其丰富的库和工具,成为金融数据分析的首选语言之一。 本文将探讨如何利用Python进行金融数据分析,包括…...

密码管理工具实现

该文档详细描述了实现一个简单的密码管理工具的过程&#xff0c;工具基于PHP和MySQL构建&#xff0c;支持用户注册、密码存储、管理以及角色权限控制等核心功能。 系统架构设计 技术栈&#xff1a;PHP&#xff08;后端逻辑&#xff09;、MySQL&#xff08;数据存储&#xff09…...

构造函数和new操作符 - 2024最新版前端秋招面试短期突击面试题【100道】

构造函数和new操作符 - 2024最新版前端秋招面试短期突击面试题【100道】 &#x1f3d7;️ 在JavaScript中&#xff0c;构造函数和new操作符是创建对象的重要方式。深入理解它们的基本概念和用法&#xff0c;可以帮助你更有效地使用JavaScript进行开发。以下是关于构造函数和ne…...

6.Linux按键驱动-阻塞与非阻塞

默认打开文件时候是阻塞的 当设置打开方式为非阻塞时&#xff0c;无数据时会返回。 当设置打开方式为阻塞时&#xff0c;无数据的时候会等待1.设置打开方式为非阻塞 立即返回&#xff0c;无法读出&#xff0c;返回-1 2.设置为阻塞 核心在于驱动程序中的.read函数的支持 …...

Mac打开环境变量配置文件,source ~/.zshrc无法打开问题解决

本文将会介绍&#xff0c;Mac如何打开zshrc环境变量配置文件。 在搭建开发环境的时候&#xff0c;通常我们需要配置环境变量&#xff0c;例如&#xff1a;ANDROID_HOME、nvm等。 具体的做法是把配置环境变量的命令加入到 shell 的配置文件中。如果你的 shell 是 zsh&#xff…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23目录1. Advancements in Visual Language Models for Remote Sensing: Datasets, Capabilities, and Enhancement Techniques摘…...

【C#】搭建环境之CSharp+OpenCV

在我们使用C#编程中&#xff0c;对图片处理时会用到OpenCV库&#xff0c;以及其他视觉厂商提供的封装库&#xff0c;这里因为OpenCV是开源库&#xff0c;所以在VS资源里可以直接安装使用&#xff0c;这里简单说明一下搭建的步骤及实现效果&#xff0c;留存。 1. 项目创建 1.1…...

100种算法【Python版】第25篇——Bidirectional Search算法

本文目录 1 算法原理2 路径计算的算法步骤3 python代码4 算法应用1 算法原理 Bidirectional Search(双向搜索)算法是为了解决图中最短路径问题而提出的一种搜索策略,旨在提高搜索效率。该算法的核心思想是同时从起点和终点进行搜索,直到两个搜索相遇。这种方法有效地减少了…...

WebSocket与Socket

一、定义与用途 Socket Socket&#xff08;套接字&#xff09;是一个抽象层&#xff0c;用于在网络上执行进程间的通信。它为应用程序提供了发送和接收数据的机制&#xff0c;通过IP和端口号来标识网络中唯一的位置。Socket可以使用TCP进行面向连接的可靠通信&#xff0c;也可以…...

Python 3 维护有序列表 bisect

在Python 3中&#xff0c;bisect模块提供了用于维护有序列表的函数&#xff0c;主要用于在有序序列中进行二分查找以及插入操作&#xff0c;以下是其常见用法的介绍&#xff1a; 1. 导入模块 首先需要导入bisect模块&#xff1a; import bisect2. 主要函数及用法 bisect.bi…...

vue版本太低无法执行vue ui命令

连接 ui和create目前都只支持3.0以后得版本才能使用 https://blog.csdn.net/m0_67318913/article/details/136775252?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-136775252-blog-121204604.235v43pc_blog_bottom_relevance…...

数据结构 之 二叉树的遍历------先根遍历(五)

提示&#xff1a;本篇章主要讲解数据结构中树的相关知识。 文章目录 二叉树的遍历为什么要提出这么多遍历方法&#xff1f;先根遍历二叉树&#xff08;TLR&#xff09;先根遍历二叉树的递归算法&#xff08;重点&#xff09;先根遍历二叉树的非递归算法(了解&#xff0c;但是得…...

Xss_less靶场攻略(1-18)

xss-lab-less1 ur特殊字符转义 存在url中 转义符为 %2B& 转义符为 %26空格 转义符为 或 %20/ 转义符为 %2F? 转义符为 %3F% 转义符为 %25#转义符为 %23 转义符为 %3Dimg 标签懒加载 在XSS攻击中&#xff0c;img标签的src属性是一个常见的攻击向量&#xff0c;因为它可以…...

【AI语音克隆整合包及教程】声临其境,让想象成为现实——第二代GPT-SoVITS引领语音克隆新时代!

随着人工智能技术的飞速发展&#xff0c;曾经只能在科幻小说中出现的场景逐渐走进了我们的日常生活。其中&#xff0c;语音克隆技术以其独特魅力&#xff0c;成为了人们关注的焦点。GPT-SoVITS作为一款前沿的语音克隆工具&#xff0c;由RVC变声器创始人“花儿不哭”与AI音色转换…...

echarts属性之dataZoom

dataZoom-slider 滑动条型数据区域缩放组件&#xff08;dataZoomInside&#xff09; 滑动条型数据区域缩放组件提供了数据缩略图显示&#xff0c;缩放&#xff0c;刷选&#xff0c;拖拽&#xff0c;点击快速定位等数据筛选的功能。下图显示了该组件可交互部分 所有属性 data…...

SQLite 语法

SQLite 语法 SQLite 是一种轻量级的数据库管理系统&#xff0c;它遵循 SQL&#xff08;结构化查询语言&#xff09;标准。SQLite 的语法相对简单&#xff0c;易于学习和使用。本文将详细介绍 SQLite 的基本语法&#xff0c;包括数据定义语言&#xff08;DDL&#xff09;、数据…...

外贸企业官网建站/2345导网址导航下载

在mfc中嵌入cef全文介绍如何使用MFC在一对话框中嵌入另一对话框.全文介绍如何使用MFC在内部中嵌入另一部分。 代码如下&#xff1a;代码如下&#xff1a; static MyInDlg inDlg; // 需嵌入的对话框 inDlg.Create( IDD_DIALOG, AfxGetApp()->m_pMainWnd); CRect rc; // 嵌入…...

wordpress去掉链接中的m/山东seo推广公司

原文 Oracle查看和修改其最大的游标数 以下的文章主要是介绍Oracle查看和修改其最大的游标数&#xff0c;本文主要是通过相关代码的方式来引出Oracle查看和修改其最大的游标数的实际操作步骤&#xff0c;以下就是文章的具体内容的描述&#xff0c;望你在浏览完之后&#xff0c…...

县建设局 协会网站/域名关键词排名查询

中新网1月17日电 据欧联网援引欧联通讯社报道&#xff0c;当地时间1月15日晚&#xff0c;一名搭乘意大利航空公司班机的30岁埃及男子&#xff0c;试图强行滞留意大利未果后被遣返。男子遭遣返登机后趁机舱关门之际跳机逃往机场起降区域&#xff0c;引发机场大乱被迫临时关闭&am…...

南宁网站建设公司哪家专业/中国新冠疫情最新消息

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; 目 录你是怎么理解乐观锁和悲观锁的&#xff0c;具体怎么实现呢&#xff1f; 悲观锁认为多个线程访问同一个共享变量冲突的概率较大, 会在每次访问共享变量之前都去真正加锁. 乐观…...

政务网站建设管理工作总结/网络营销比较好的企业

解决方法&#xff1a; sudo apt-get install -f ​​​​转载于:https://www.cnblogs.com/wulinmenghuantejing/p/8378005.html...

深圳做二类医学学分的网站/他达拉非功效与作用主要会有哪些

今天咋一看&#xff0c;发现很久没写博客了 的确&#xff0c;开学之后&#xff0c;写博客的时间越来越少了…… 今天来做一个比较实用的小应用——平滑的人物走动&#xff0c;同时解决常见的闪屏问题、实现透明位图 这些技术在游戏开发中是很常见的 --------------------------…...