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

OpenCV 将rgb图像转化成字符图像

将RGB图像转换成字符图像(ASCII art)通常涉及到灰度化、降采样、映射字符等一系列步骤。以下是一个简化的OpenCV+C++实现示例:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>// 字符映射表,从亮到暗
std::string charset = " .:-=+*#%@";// 将RGB图像转为字符图像
std::string RGBToASCII(const cv::Mat& img) {// 1. 转换为灰度图像cv::Mat gray;cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);// 2. 降采样,缩小图像以便适应字符分辨率cv::resize(gray, gray, cv::Size(40, 40), 0.1, 0.1);  // 此处0.1只是一个示例,具体比例需根据终端窗口大小和字符数量调整// 3. 将灰度值映射为字符索引std::string asciiArt;for (int i = 0; i < gray.rows; ++i) {for (int j = 0; j < gray.cols; ++j) {// 获取当前像素的灰度值,并将其归一化到charset长度范围内double val = gray.at<uchar>(i, j) / 255.0 * (charset.size() - 1);size_t index = static_cast<size_t>(val);// 添加对应字符到字符串asciiArt += charset[index];asciArt += ' ';}asciiArt += '\n'; // 添加换行符}return asciiArt;
}int main() {cv::Mat img = cv::imread("input.jpg", cv::IMREAD_COLOR);if (img.empty()) {std::cerr << "Could not open or find the image!" << std::endl;return -1;}std::string asciiArt = RGBToASCII(img);// 输出或保存字符图像std::cout << asciiArt << std::endl;// 或者保存到文件std::ofstream file("ascii_art.txt");if (file.is_open()) {file << asciiArt;file.close();} else {std::cerr << "Unable to open file for writing." << std::endl;}return 0;
}

这段代码首先将RGB图像转换为灰度图像,然后对其进行降采样,最后将每个像素的灰度值映射到字符集中的字符,形成ASCII艺术图像。这里的字符集可以根据需要自定义,亮的像素映射到字符集中靠前的字符,暗的像素映射到靠后的字符。此外,降采样的比例应根据输出设备的实际分辨率进行调整。

http://www.lryc.cn/news/318295.html

相关文章:

  • ios开发错误积累
  • 软件实际应用实例,物流打印用什么软件,佳易王物流货运快运单打印查询管理系统软件,可以在已经印刷好的单子上打印,也可直接打印
  • 第六届上海国际垃圾焚烧发电展将于12月11-13日上海举办
  • pytorch(十)循环神经网络
  • 【黑马程序员】Python文件、异常、模块、包
  • 导入fetch_california_housing 加州房价数据集报错解决(HTTPError: HTTP Error 403: Forbidden)
  • 后勤管理系统|基于SSM 框架+vue+ Mysql+Java+B/S架构技术的后勤管理系统设计与实现(可运行源码+数据库+设计文档+部署说明+视频演示)
  • 【办公类-40-01】20240311 用Python将MP4转MP3提取音频 (家长会系列一)
  • 人类的谋算与量子计算
  • 【数据结构和算法初阶(C语言)】栈的概念和实现(后进先出---后来者居上的神奇线性结构带来的惊喜体验)
  • 搭建mysql主从复制(主主复制)
  • centos 系统 yum 无法安装(换国内镜像地下)
  • 【python绘图】turle 绘图基本案例
  • 损失函数和反向传播
  • Nginx:配置拦截/禁用ip地址
  • css超出部分显示省略号
  • python-0001-安装虚拟环境
  • Python爬虫:原理与实战
  • C# danbooru Stable Diffusion 提示词反推 Onnx Demo
  • Windows系统搭建Cloudreve结合内网穿透打造可公网访问的私有云盘
  • upload-labs 0.1 靶机详解
  • react 综合题-旧版
  • 基于ElasticSearch存储海量AIS数据:AIS数据索引机制篇
  • IDEA中返回上一步和下一步快捷键失效【Ctrl+Alt+左箭头】
  • Hubspot 2023年推荐使用的11个AI视频生成器
  • Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-2、线条平滑曲面且可通过面观察柱体变化(二)
  • [2024年]-flink面试真题(四)
  • 基于SpringBoot+Druid实现多数据源:原生注解式
  • AJAX 03 XMLHttpRequest、Promise、封装简易版 axios
  • 如何将办公资料文件生成二维码?扫码可看详情