DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载

二值化是逐像素处理,而逐像素处理会有很多效果,这主要是给人眼看的,因为像素值的变化,直观的就是图像变化,比如颜色。

颜色变幻处理

OpenCV提供了一些图片,如下:
在这里插入图片描述
粗看是一些风格,细看一下,其实是各行颜色一致,看属性知道图像尺寸为256 * 30。
256是字节宽度,也是各通道取值范围。
所以,可以用查表法直接替代处理,即将上面一张图片作为输入,则各行就将原值的0-255映射成为图片相应列的值。图像尺寸设置为30,其实也无所谓多少行,至少一行就行,不过行数太少了,人看起来就感觉,行数多了,读到计算机内存里面处理也浪费。那就折衷选个30吧。
代码处理,这就看水平了,可以一次性全读入,也可以只读取需要的图片。

   QString colorMapPath = THelper::File::GetPath_Resource() + "colorMap/";
    QStringList fileNames;
    THelper::File::BrowseDir(fileNames, colorMapPath, "*.*");
    if (!COLORMAP_TABLE) {
        if(fileNames.count() > 0) {
            COLORMAP_TABLE = new cv::Vec3b[256 * fileNames.count()];
            BYTE * pDst = (BYTE*)COLORMAP_TABLE;
            foreach(QString fileName, fileNames) {
                cv::Mat mat = CvHelper::MatFromFile(fileName);
                if(mat.cols * mat.channels() == 256 * 3) {
                    memcpy(pDst, mat.data, 256 * 3);
                    pDst += 256 * 3;
                }
            }
        }
    }

最终的颜色变幻处理逻辑:

// 其它-颜色变幻
    int paramIndex = 0;
    FMapIndex = GetParamValue_Int(paramIndex++);    // 0: 变幻颜色
    Mat tempMat;
    cvtColor(dstMat, tempMat, COLOR_BGR2GRAY);
    dstMat = cv::Mat(tempMat.rows, tempMat.cols, CV_8UC3);
    cv::Vec3b * table = COLORMAP_TABLE + 256 * FMapIndex;
    BYTE * pTemp = tempMat.data;
    cv::Vec3b * pDst = (cv::Vec3b*)dstMat.data;
    for (int row = 0; row < tempMat.rows; ++row)
        for (int col = 0; col < tempMat.cols; ++col)
            * pDst++ = table[*pTemp++];

本质上还是逐像素处理,这里是查表法,核心逻辑就是* pDst++ = table[*pTemp++];
这个整明白后,那就可以自己设计一个图片作为查表输入,当然有一点点的美工基础更好。

API函数

OpenCV中,提供了一个applyColorMap函数,具体文档说明:

/** @brief Applies a GNU Octave/MATLAB equivalent colormap on a given image.

@param src The source image, grayscale or colored of type CV_8UC1 or CV_8UC3.
@param dst The result is the colormapped source image. Note: Mat::create is called on dst.
@param colormap The colormap to apply, see #ColormapTypes
*/
CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap);

继续查看ColormapTypes定义,可知其系统提供了22种颜色风格。

//! GNU Octave/MATLAB equivalent colormaps
enum ColormapTypes
{
    COLORMAP_AUTUMN = 0, //!< ![autumn](pics/colormaps/colorscale_autumn.jpg)
    COLORMAP_BONE = 1, //!< ![bone](pics/colormaps/colorscale_bone.jpg)
    COLORMAP_JET = 2, //!< ![jet](pics/colormaps/colorscale_jet.jpg)
    COLORMAP_WINTER = 3, //!< ![winter](pics/colormaps/colorscale_winter.jpg)
    COLORMAP_RAINBOW = 4, //!< ![rainbow](pics/colormaps/colorscale_rainbow.jpg)
    COLORMAP_OCEAN = 5, //!< ![ocean](pics/colormaps/colorscale_ocean.jpg)
    COLORMAP_SUMMER = 6, //!< ![summer](pics/colormaps/colorscale_summer.jpg)
    COLORMAP_SPRING = 7, //!< ![spring](pics/colormaps/colorscale_spring.jpg)
    COLORMAP_COOL = 8, //!< ![cool](pics/colormaps/colorscale_cool.jpg)
    COLORMAP_HSV = 9, //!< ![HSV](pics/colormaps/colorscale_hsv.jpg)
    COLORMAP_PINK = 10, //!< ![pink](pics/colormaps/colorscale_pink.jpg)
    COLORMAP_HOT = 11, //!< ![hot](pics/colormaps/colorscale_hot.jpg)
    COLORMAP_PARULA = 12, //!< ![parula](pics/colormaps/colorscale_parula.jpg)
    COLORMAP_MAGMA = 13, //!< ![magma](pics/colormaps/colorscale_magma.jpg)
    COLORMAP_INFERNO = 14, //!< ![inferno](pics/colormaps/colorscale_inferno.jpg)
    COLORMAP_PLASMA = 15, //!< ![plasma](pics/colormaps/colorscale_plasma.jpg)
    COLORMAP_VIRIDIS = 16, //!< ![viridis](pics/colormaps/colorscale_viridis.jpg)
    COLORMAP_CIVIDIS = 17, //!< ![cividis](pics/colormaps/colorscale_cividis.jpg)
    COLORMAP_TWILIGHT = 18, //!< ![twilight](pics/colormaps/colorscale_twilight.jpg)
    COLORMAP_TWILIGHT_SHIFTED = 19, //!< ![twilight shifted](pics/colormaps/colorscale_twilight_shifted.jpg)
    COLORMAP_TURBO = 20, //!< ![turbo](pics/colormaps/colorscale_turbo.jpg)
    COLORMAP_DEEPGREEN = 21  //!< ![deepgreen](pics/colormaps/colorscale_deepgreen.jpg)
};

运行效果

OpenCV 4 功能 - 颜色变幻

不过,用applyColorMap的话,受到的制约就是只有这22种效果。也许OpenCV 5会更多一些。要想自由的话,还是直接查表处理,那里啥都有。

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码) 数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994 立即下载

相关推荐

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。QT 6支持C++ 17,里面很多C++的新功能,用起来更为舒爽。QT Creator中,代码提示更快捷,代码折叠也很准确QT Creator中,文档生成更方便,配合Doxygen之后,自己都感觉更专业了当然,更让我高兴的是,QT直接支持最新版的OpenCV,以前还一直停留在2.3版。

drgraph的博客 1442

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分在图像处理中,也不仅仅只是1或0,因为这两个值看起来都是黑的,人眼很难分辨清楚,那就放大一些,255或0,黑白就出来了目标识别、图像分割、目标提取等后续应用,很多会基于二值化的结果。所以图像分析的二值化处理是一个重要环节。

drgraph的博客 734

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

薄膜比拟、开口截面扭转承载力以及风电混塔水平缝张开状态下抗扭承载力推导

风电混塔水平缝张开状态下的抗扭承载力推导,从弹性力学说起

George的博客 873

DrGraph原理示教 - OpenCV 4 功能 - 边界填充

这里的核心就是理解borderType,具体就是。今天简单来看一下OpenCV中的边界填充。OpenCV 4 功能 - 边界填充。其实不用记,实验一下就了解。

drgraph的博客 631

DrGraph原理示教 - OpenCV 4 功能 - 单通道图

在OpenCV中,Mat类的channels实际上和每个元素上存储的数据有关,例如存储的是Point3f,channel就自动为3。具体来说,图像是由一个个像素点堆积而成的,而一个像素点,又是由RGB颜色混合而成的。从数学的角度来看,结果都是 f(R, G, B, A),单通道是R/G/B/A中的一个,灰度是其余逻辑,如0.299×R+0.587G+0.114B。当然,对编程来说,光知道通道数是多少,并没有什么大用,应该要取得某个通道的图像才是目的,这也是各图像的内在本质。这里的通道就是channels。

drgraph的博客 650

Calibre提参实战:如何用hcell和xcell文件精准屏蔽模块(附避坑指南)

本文详细解析了Calibre提参过程中hcell和xcell文件的应用技巧,帮助工程师精准屏蔽模块以优化寄生参数提取。通过对比hcell与xcell的核心差异、图形界面与命令行操作指南,以及常见问题排查方法,提升芯片后端设计效率。附避坑指南,解决EETOP论坛热议的模块丢失问题。

weixin_26795617的博客 440

Sigrity System Explorer Transient Analysis模式进行瞬态仿真分析操作指导-差分信号

Sigrity System Explorer Transient Analysis模式可以用于瞬态仿真分析,通过搭建简易拓扑用于前仿真分析通道的时域性能,下面搭建一个简易的差分拓扑进行说明,以下图为例,准备好发送接收端的IBIS模型, (ibis_se.ibs,本例发送接收端都使用相同的IBIS模型),以及传输线的S参数模型(welement_se.sp)最上方的图形界面是传输线的模型,本例是一个上下都有参考平面的带状线,右侧的梯形是蚀刻角度,根据W1和W2以及铜厚来确定。

weixin_54787054的博客 440

DrGraph原理示教 - OpenCV 4 功能 - 阈值

参数4:阈值的方式,主要有5种,分别为cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV。有时间看下源码就可以不用猜测了。二进制阈值化:选择一个特定的阈值量,大于该阈值的像素点的灰度值设定为最大值(如8位灰度值最大为255),小于该阈值的像素点的灰度值设定为0。反阈值化为0:与阈值化为0类似,只是像素点的灰度值大于该阈值的不进行任何改变,而小于该阈值的,其灰度值全部变为0。

drgraph的博客 1447

【C#学习记录】如何让界面控件实现自适应布局(Winform)

小伙伴们大家好,我是雷工!在软件界面设计中,客户常常要求设计的界面可以随意缩放,缩放过程中,界面中的按钮等控件也会随着窗体变大缩小自动调整显示位置和尺寸大小。在C#的Winform窗体中如何实现这个效果,下面我们一起学习下。

做有价值的事,积累有价值的笔记! 1万+

DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值(从0到255,不总是)的图在X轴上,在y轴上的图像对应的像素个数。通过观察图像的直方图,我们可以直观的了解图像的对比度、亮度、亮度分布等。在直方图中,横坐标表示图像中各个像素点的灰度级,纵坐标表示具有该灰度级的像素个数。直方图的左边部分显示了图像中较暗像素的数量,右边区域显示了更明亮的像素。直方图是非常常用的图像处理方法,有时在很多图像预处理中能起到特别好的效果。

drgraph的博客 1361

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2834

从0到全栈:C#/.NET/.NET Core终极学习路线——2025年开发者必修的12个阶段与30个实战项目

【代码】从0到全栈:C#/.NET/.NET Core终极学习路线——2024年开发者必修的12个阶段与30个实战项目。

墨夶的博客 2042

BS版图形系统 - 界面控件配置

BS版图形系统 - 界面控件配置界面控件考虑资源配置化XML资源配置加载下一步任务 QQ: 282397369 界面控件考虑 有了属性浏览器,下来就该处理工具栏了。 一个直观感觉,网页留给程序的空间,要比应用程序少。网页在浏览器这个程序中运行,不同的浏览器,提供相应的界面,占据标题、工具栏位置,甚至书签与侧栏。所以做网页程序的时候,尽量能将工作区整大一些。 当然,如何整应该是UI设计的事,技术层面还是关心如何实现的问题。 在属性浏览器的基础上,初步实现了一个VCL的JS框架。但新建控件,还是要写一堆代码来控

drgraph的博客 1270

医学图像的对抗攻击:模型安全性与鲁棒性分析

医学图像的对抗攻击:模型安全性与鲁棒性分析 ,人工智能,计算机视觉,大模型,AI,本文围绕医学图像的对抗攻击展开,分析了其对AI模型的威胁。介绍了对抗样本定义、攻击原理,以及FGSM、BIM、PGD等常见攻击方法,还给出了相关代码示例。阐述了攻击对模型诊断准确性和可信度的影响,提出对抗训练、输入预处理、模型集成等提升模型安全性与鲁棒性的方法,探讨了评估指标、数据集和流程,分析了实际应用中的挑战与应对策略,最后展望了未来发展趋势。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

BS版图形系统 - 画线

BS版图形系统 - 画线 一晃两个月过去了,儿子也考了个喜欢的大学,重新,又稳定了下来。 我也重操旧业,编点小程序。时不时发个小博客,自娱自乐一下。 今天处理图元 - 线。 话不多说,直接上代码。 export class TLine extends TTwoPointMeta { beginArrow: TArrow = new TArrow; endArrow: TArrow = new TArrow; Initial() { this.setClassType(

drgraph的博客 774

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

DrGraph - SVG模块之一:显示与节点选择

DrGraph - SVG模块之一:显示与节点选择显示SVG编辑生成目标子集SVG 对于虚拟面板中的元件,以前采用FLASH技术实现相应显示与交互,通过ActionScript进行通信。现在看来,FLASH好象势微,使用起来有点麻烦,需要一些设置。其次,做FLASH的人也少了,后续也不太方便。 那就用SVG来进行改造。 显示SVG 将SVG解析置于DLL中,应用程序直接调用DLL完成解析并生成PNG,然后再画出显示。 UnicodeString filename = FResponseNode->At

drgraph的博客 680

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

脚本为王 - 辅助功能

脚本为王 - 辅助功能目标通用辅助功能QQ自动反馈图像输入操作模式 QQ: 282397369 目标 之前做了个苹果全自动试玩脚本,发觉脚本+图像分析确实很有用,尤其是针对最终应用,比如手机业务、产品质量检测,其灵活性与实用性大大增加。 本月,送儿子去深圳上大学,发现深圳众多中小公司工厂,对脚本+图像分析的需求旺盛。 所以,干脆做一个通用的脚本模块软件,可用于诸多需求场合。 把多年不用的群208894875清空,改群名为脚本为王,笨狗先扎个狼狗势。 通用辅助功能 QQ自动反馈 该功能主要是在软件运行过程中,

drgraph的博客 649

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

DrGraph原理示教 - OpenCV 4 功能 - 形态操作

OpenCV作为一个基础的或通用的图像处理,那肯定是需要支持不同的需求,象刚说的这些主体差异,功能也是存在了,只不过采用了相应的所谓专业术语来进行称呼,如梯度、礼帽与黑帽。这些结果可以为主体,但很多地方还想看看边界或轮廓,那就需要在这些主体之间进行差值,或是减法操作,这样,结果就是边缘,就象两个大小不同的同心圆,差值后就得到圆环。从OpenCV图像处理基本知识来看,膨胀腐蚀操作后,还有形态操作,如开运算、闭运算、梯度、礼帽与黑帽,感觉很多,其实,本质上就是批处理操作,如。如,梯度 = 膨胀 - 腐蚀。

drgraph的博客 636

BS版图形系统 - Ribbon工具栏初步

BS版图形系统 - Ribbon工具栏初步组件实现RibbonRibbonTabToolBarButton调用对应的xml运行效果下一步工作 QQ: 282397369 开始攻Ribbon,毕竟软件有个象样的界面,还是要拿得出手一点点。 思路就借鉴DevExpress,简化实现,不整太多的不必要环节。 第二个思路就是先实现功能,以后再模块化。 组件实现 先准备初步要用到的组件。 Ribbon export class TRibbon extends TPageControl { btnApp: TB

drgraph的博客 602

DrGraph原理示教 - OpenCV 4 功能 - 膨胀腐蚀

这个概念对于没太多理论支持的程序员来说,术语太多,可以简单理解就是,膨胀与腐蚀是相对于白色区域而言的。如果膨胀,白色区域就象面团发酵一样会胀大,但空间就那么大,可能两个面团就会挨上合并成一个面团了。如果腐蚀,就象拉面,原来一根面条,可能就断成两根,当然断的地方肯定是从细处断。原理很简单,代码也很简单,膨胀与腐蚀分别对应两个函数:dilate与erode,这两个函数的参数都一样。这些处理有些是概念上的,有些是原理上的,也有形态上的,那就看用途与目的了。在二值图的结果基础上,可针对性处理。

drgraph的博客 564

BS版图形系统 - 属性浏览器

BS版图形系统 - 属性浏览器 ** QQ: 282397369 ** 原理示教项目基本没跑,6月初确定动手。 两条线同时进展:管理系统和图形系统。 管理系统有正常前后端即可,图形系统还是主要的业务展示场合,一般的管理系统并不涵盖这些功能,所以干脆从头开发。 经过半个月的摸索尝试,最终选定TypeScript 作为图形工具,首先就要解决属性修改需求,即PropertyGrid。网上也有现成的PropertyGrid,但用起来代价太大,那就自己来做一个,也算是BS系统入个门。在以前用uniGUI的基础上,半个

drgraph的博客 447
上一篇: DrGraph原理示教 - OpenCV 4 功能 - 二值化
下一篇: DrGraph原理示教 - OpenCV 4 功能 - 膨胀腐蚀
DrGraph
博客等级 码龄14年 228粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值