项目【MFC】总结(三)——图像灰度化/彩色化
调用 根据 调整图像大小以适应显示窗口,并进行比例缩放。
发布日期:2025-06-18 15:52:17
浏览次数:3
分类:精选文章
本文共 1437 字,大约阅读时间需要 4 分钟。
灰度化与彩色化功能的实现
在本项目中,界面右侧的灰度化与彩色化功能主要涉及图像处理,相较于MFC应用程序开发,这一模块的实现更加侧重于OpenCV技术的运用。
灰度化功能的实现相对简单,主要是对读取的图像进行转换,将其从Vector数据结构转换为OpenCV的Mat格式。具体实现如下:
void VecToMat(const vector>& Vec, Mat& img) { int rows = Vec.size(); int cols = Vec[0].size(); img = cv::Mat::zeros(Size(cols, rows), CV_16UC1); for (int i = 0; i < rows; ++i) { short* ptmp = img.ptr (i); for (int j = 0; j < cols; ++j) { if (Vec[i][j] < 0) { ptmp[j] = 0; } else { ptmp[j] = Vec[i][j]; } } }}
灰度化完成后,可直接显示转换后的图像。对于彩色化功能,需要对灰度图像应用伪彩色映射。OpenCV中提供了applyColorMap函数来实现这一功能,常用的颜色映射编号包括2(热色调图)及6(冷色调图)。
彩色化的实现代码如下:
Mat get_img(const vector>>& csvData_Slip, int res_X, int res_Y, int num, bool color) { int rows = csvData_Slip[0].size(); int cols = csvData_Slip[0][0].size(); Mat img = cv::Mat::zeros(Size(cols, rows), CV_16UC1); for (int i = num; i <= num; ++i) { VecToMat(csvData_Slip[i], img); img.convertTo(img, CV_8U, 1, 0); if (color) { cv::applyColorMap(img, img, 2); // 2、6 伪彩色图 } } return img;}
applyColorMap函数的参数解释:
img:目标图像。result:应用颜色映射后的图像。color:颜色映射编号。
需要注意的是,该实现代码中包含了许多未声明的全局变量,应根据实际项目需求进行补充和调整。
灰度化与彩色化功能的整体实现流程如下:
VecToMat函数将Vector数据转换为OpenCV Mat格式。color标志选择是否应用颜色映射。整个灰度化与彩色化功能的核心代码结构如上所述,具体实现细节需根据实际应用需求进行补充和优化。
发表评论
最新留言
很好
[***.229.124.182]2026年06月20日 15时27分15秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php之memcache,memcached
2023-03-01
php之引用
2023-03-01
PHP之数组和函数的基本教程
2023-03-01
UVa 10465 - Homer Simpson
2023-03-01
php九九乘法表加粗,PHP九九乘法表
2023-03-01
PHP二维数组将重复键值合并重组成三维数组
2023-03-01
PHP二维数组转换为一维数组
2023-03-01
PHP二维数组重组
2023-03-01
PHP交换两个变量值
2023-03-01
php代码执行完整流程介绍
2023-03-01
PHP代码格式化工具phpcf常见问题解决方案
2023-03-01
PHP使用3DES算法加密解密字符串
2023-03-01
php使用memcached扩展的一个BUG
2023-03-01
PHP内核介绍及扩展开发指南—基础知识
2023-03-01
PHP写日志fwrite和file_put_contents的区别与性能
2023-03-01
PHP函数
2023-03-01
PHP函数__autoload失效原因(与smarty有关)
2023-03-01
PHP函数操作数字和汉字互转(100以内)
2023-03-01
PHP函数方法
2023-03-01