将图片按灰度转换成字符

 

from struct import *ch = ['.', ':', '!', '~', '+','=', '^', '*','$', '#']
ch.reverse()def calc(R, G, B):#模式Lreturn R * 299 // 1000 + G * 587 // 1000 + B * 144 / 1000def character( val):num = val / 260 * len(ch)num = round(num)if num>=len(ch):num=len(ch)-1return ch[num]class rmb:def __init__(self, path):file = open(path, 'rb')self.bfType = file.read(2)self.bfSize = file.read(4)self.bfReserved1 = file.read(2)self.bfReserved2 = file.read(2)self.bfOffBits = file.read(4)self.biSize = file.read(4)self.biWidth = file.read(4)self.biHeight = file.read(4)self.biPlanes = file.read(2)self.biBitCount = file.read(2)self.biCompression = file.read(4)self.biSizeImage = file.read(4)self.biXPelsPerMeter = file.read(4)self.biYPelsPerMeter = file.read(4)self.biClrUsed = file.read(4)self.biClrImportant = file.read(4)self.bmp_data = []self.h, = unpack("<i", self.biHeight)self.w, = unpack("<i", self.biWidth)print(self.h)print(self.w)for height in range(self.h):bmp_data_row = []count = 0for width in range(self.w):bmp_data_row.append([unpack("<B", file.read(1))[0], unpack("<B", file.read(1))[0], unpack("<B", file.read(1))[0]])count += 3while count % 4 != 0:file.read(1)count += 1self.bmp_data.append(bmp_data_row)self.bmp_data.reverse()file.close()def write_(self):res_file = open('res.txt', 'w')for height in range(self.h):bmp_data_row = self.bmp_data[height]for width in range(self.w):R = bmp_data_row[width][0]G = bmp_data_row[width][1]B = bmp_data_row[width][2]res_file.write(character(calc(R,G,B)))res_file.write('\n')res = rmb('1.bmp')#图片路径bmp格式
res.write_()

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IIC总线读取温度湿度传感器数据实验

iic.c #include "iic.h"extern void printf(const char* fmt, ...); /** 函数名 &#xff1a; delay_us* 函数功能&#xff1a;延时函数* 函数参数&#xff1a;无* 函数返回值&#xff1a;无* */ void delay_us(void) //微秒级延时 {unsigned int i 2000;while(i-…

CNN卷积神经网络:理论基础、核心架构与多元应用

CNN是一种深度学习模型&#xff0c;利用卷积层提取图像特征&#xff0c;池化层降维与增强不变性&#xff0c;全连接层实现分类/回归。核心理论包括局部感知、权值共享、多层抽象。广泛应用图像识别、目标检测、语义分割、生成任务等领域。 一、CNN理论基础 1、局部感知野&…

【迅为iMX6Q】开发板 Linux version 6.6.3 SD卡 启动

开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 20.04 【迅为imx6q】开发板&#xff0c; 2G DDR RAM linux-imx 下载 使用 NXP 官方提供的 linux-imx&#xff0c;代码地址为&#xff1a; https://github.com/nxp-imx/linux-imx 使用 git 下载 linux-imx&#xff…

Dual-AMN论文阅读

Boosting the Speed of Entity Alignment 10: Dual Attention Matching Network with Normalized Hard Sample Mining 将实体对齐速度提高 10 倍&#xff1a;具有归一化硬样本挖掘的双重注意力匹配网络 ABSTRACT 寻找多源知识图谱(KG)中的等效实体是知识图谱集成的关键步骤&…

IoC与Spring

目录 IoC控制反转 现实案例 特点 目的 DI依赖注入 小总结 介绍Spring 狭义和广义上的Spring 传统编码方式的不足 需求引入 弊端分析 IoC控制反转 现实案例 1、买水果问老板各种水果的口感而不是自己去挨个尝试一遍。 2、买房子找中介而不是自己去花时间找房东。…

springcloud 整合swagger文档教程

我用的是nacos和gateway 我的模块 父依赖没什么太大关系如果出现版本冲突问题可用参考我的依赖版本 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org…

claude国内无法使用的解决办法

claude3国内如何使用, claude国内无法使用的解决办法来啦&#xff01; 近日&#xff0c;人工智能公司AnthropicAI推出了全新的大语言模型Claude 3系列&#xff0c;其中最强大的版本Claude 3 Opus据称在性能上全面超越了OpenAI的GPT-4模型。Claude 3系列包括三个版本&#xff1…

金融科技领航者 财源滚滚选股软件助力投资者智赢未来

在波澜壮阔的金融科技浪潮中&#xff0c;河北源达凭借深厚的行业积淀与前瞻的创新思维&#xff0c;逐渐崭露头角&#xff0c;成为业界瞩目的领航者。多年来&#xff0c;公司始终坚守初心&#xff0c;致力于为客户提供高效、的金融科技服务&#xff0c;助力投资者在资本市场中稳…

OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)

本文来源公众号“OpenCV与AI深度学习”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;实战 | 基于YOLOv9SAM实现动态目标检测和分割&#xff08;步骤 代码&#xff09; 0 导 读 本文主要介绍基于YOLOv9SAM实现动态目标检测和分…

每日两题 / 76. 最小覆盖子串 239. 滑动窗口最大值(LeetCode热题100)

76. 最小覆盖子串 - 力扣&#xff08;LeetCode&#xff09; 类似双指针&#xff08;滑动窗口&#xff09;&#xff0c;一开始l和r指向0下标&#xff0c;当区间[l, r)之间的字符串无法覆盖t串时&#xff0c;r。直到区间覆盖了t串 接着移动l指针&#xff0c;假设当前区间为[l …

毕设学习:联邦学习梯度聚合加密算法

原本的加密算法大致思路&#xff1a;各个客户端上传梯度时进行加密&#xff0c;服务端直接用有扰乱的梯度当成真梯度来计算&#xff0c;这样一来谁也不知道谁是真梯度 为了避免原本的算法的一些问题&#xff0c;本文提出了加密-解密结构&#xff0c;并证明了这种结构带来的误差…

光伏电站智能勘探:无人机优势及流程详解

随着科技和互联网技术的不断发展&#xff0c;无人机在各个领域的应用越来越广泛&#xff0c;其中之一就是光伏电站智能勘探。利用无人机高清摄像头和传感器等设备&#xff0c;可以对光伏电站周边环境、日照情况、房屋状态进行全方面的勘探和记录&#xff0c;搭配卫星勘探、实地…