03OpenCV图像的掩膜操作

文章目录

  • 掩膜操作提高图像的对比度
  • 获取图像像素制作
  • 图像掩膜算子
  • 防止像素溢出算子
  • 全部代码

掩膜操作提高图像的对比度

红色是中心像素,从上到下,从左到右对每个像素做同样的处理操作,得到最终结果就是对比度提高之后的输出图像Mat对象
在这里插入图片描述注:相当于用一个刷子把图像的每隔几点的颜色增强(理解就行),以下为代码表达

    int cols = (src.cols-1) * src.channels();//src.cols 为图像的列int offsetx = src.channels();int rows = src.rows;dst = Mat::zeros(src.size(), src.type());for (int row = 1; row < (rows - 1); row++) {const uchar* previous = src.ptr<uchar>(row - 1);const uchar* current = src.ptr<uchar>(row);const uchar* next = src.ptr<uchar>(row + 1);uchar* output = dst.ptr<uchar>(row);for (int col = offsetx; col < cols; col++) {output[col] = saturate_cast<uchar>(5 * current[col] - (current[col- offsetx] + >current[col+ offsetx] + previous[col] + next[col]));}}

获取图像像素制作

  • CV_Assert(myImage.depth() == CV_8U); (OpenCV 中的 CV_Assert 函数来执行一个断言,用于确保 myImage 的深度是 CV_8U。在这种情况下,它检查 myImage 是否是一个8位无符号整数类型的图像。如果条件不满足,程序将会终止并输出错误信息。这可以帮助程序员在开发过程中及早捕获到一些潜在的问题。)
  • Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。
  • 获得当前行指针const uchar* current= myImage.ptr(row );
  • 获取当前像素点P(row, col)的像素值 p(row, col) =current[col]

图像掩膜算子

filter2D 掩码算子

filter2D(InputArray src,OutputArray dst,int ddepth,InputArray kernel,)
src为输入图像。
dst为目标图像,其尺寸和通道与输入图像一致。
ddepth期望的目标图像类型,即位图深度。其中输出图像的位图深度应该大于或者等于输入图像的位图深度。值为-1时表示与原图(即src)的位图深度一样。
定义掩膜(例如定义一个3.2部分中所示的掩膜):Mat Kernel=(Mat_<char>(3,3)<<0,-1,0,-1,5,-1,0,-1,0)

防止像素溢出算子

saturate_cast()
在图像处理方面,无论是加是减,乘除,都会超出一个像素灰度值的范围(0~255),saturate_cast函数的作用即是:当运算完之后,结果为负,则转为0,结果超出255,则为255。

全部代码

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("test.jpg");//读取图片if (src.empty()){cout << "could not load src...";return -1;}namedWindow("test");//设置窗口名称imshow("test", src);/*int cols = (src.cols-1) * src.channels();int offsetx = src.channels();int rows = src.rows;dst = Mat::zeros(src.size(), src.type());for (int row = 1; row < (rows - 1); row++) {const uchar* previous = src.ptr<uchar>(row - 1);const uchar* current = src.ptr<uchar>(row);const uchar* next = src.ptr<uchar>(row + 1);uchar* output = dst.ptr<uchar>(row);for (int col = offsetx; col < cols; col++) {output[col] = saturate_cast<uchar>(5 * current[col] - (current[col- offsetx] + current[col+ offsetx] + previous[col] + next[col]));}}*/Mat dst;double t = getTickCount();Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);filter2D(src, dst, src.depth(), kernel);double timeconsume = (getTickCount() - t) / getTickFrequency();printf("tim consume %.2f\n", timeconsume);namedWindow("contrast image demo");imshow("contrast image demo", dst);waitKey(0);return 0;
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南

全志D1-H开发板【哪吒】使用Deabian系统入门 特别说明&#xff1a; 因为涉及到操作较多&#xff0c;博文可能会导致格式丢失 其中内容&#xff0c;会根据后续使用做优化调整 目录&#xff1a; 参考资料固件烧录启动调教点灯问题 〇、参考资料 官方资料 开发板-D1开发板【…

NLP-词向量、Word2vec

Word2vec Skip-gram算法的核心部分 我们做什么来计算一个词在中心词的上下文中出现的概率&#xff1f; 似然函数 词已知&#xff0c;它的上下文单词的概率 相乘。 然后所有中心词的这个相乘数 再全部相乘&#xff0c;希望得到最大。 目标函数&#xff08;代价函数&#xff0…

本届挑战赛季军方案:基于图网络及LLM AGENT的微服务系统异常检测和根因定位方法

aiboco团队荣获本届挑战赛季军。该团队来自亿阳信通。 方案介绍 本届挑战赛采用开放式赛题&#xff0c;基于建行云龙舟运维平台的稳定性工具和多维监控系统&#xff0c;模拟大型的生活服务APP的生产环境&#xff0c;提供端到端的全链路的日志、指标和调用链数据。参赛队伍在组…

#LLM入门|Prompt#2.2_ AI 应用开发的范式_Language_Models,the_Chat_Format_and_Tokens

在本章中&#xff0c;我们将和您分享大型语言模型&#xff08;LLM&#xff09;的工作原理、训练方式以及分词器&#xff08;tokenizer&#xff09;等细节对 LLM 输出的影响。 我们还将介绍 LLM 的提问范式&#xff08;chat format&#xff09;&#xff0c;这是一种指定系统消息…

YOLOv8改进 | 独家创新篇 | 结合SOTA思想利用双主干网络改进YOLOv8(全网独家创新,最重磅的更新)

一、本文介绍 本文给大家带来的改进机制是结合目前SOTAYOLOv9的思想利用双主干网络来改进YOLOv8(本专栏目前发布以来改进最大的内容,同时本文内容为我个人一手整理全网独家首发 | 就连V9官方不支持的模型宽度和深度修改我都均已提供,本文内容支持YOLOv8全系列模型从n到x均可…

【STM32】STM32学习笔记-WDG看门狗(46)

00. 目录 文章目录 00. 目录01. WDG简介02. IWDG概述03. IWDG框图04. IWDG键寄存器05. WWDG简介06. WWDG框图07. WWDG工作特性08. IWDG和WWDG对比09. 预留10. 附录 01. WDG简介 WDG&#xff08;Watchdog&#xff09;看门狗 看门狗可以监控程序的运行状态&#xff0c;当程序因为…

eltable 合计行添加tooltip

eltable 合计行添加tooltip 问题描述&#xff1a; eltable 合计行单元格内容过长会换行&#xff0c;需求要求合计行数据超长显示 … &#xff0c;鼠标 hover 时显示提示信息。 解决方案&#xff1a;eltable合计行没有对外的修改接口&#xff0c;想法是 自己实现一个tooltip&a…

【GB28181】wvp-GB28181-pro快速修改登录页面名称(前端)

引言 作为一个非前端开发人员,自己摸索起来比较费劲,也浪费了很多时间 本文快速帮助开发者修改为自己名称的一个国标平台 文章目录 一、 预期效果展示二、 源码修改-前端三、 验证修改效果一、 预期效果展示 二、 源码修改-前端 需要修改的文件位置: 项目工程下web_src目录…

高并发数据采集:Ebay商家信息多进程爬虫的进阶实践

背景 Ebay作为全球最大的电子商务平台之一&#xff0c;其商家信息包含丰富的市场洞察。然而&#xff0c;要高效获取这些信息&#xff0c;就需要利用先进的技术手段。本文将深入探讨如何通过并发加速技术&#xff0c;实现Ebay商家信息多进程爬虫的最佳实践方法&#xff0c;并附…

Find My运动相机|苹果Find My技术与相机结合,智能防丢,全球定位

运动相机设计用于在各种运动和极限环境中使用&#xff0c;如徒步、登山、攀岩、骑行、滑翔、滑雪、游泳和潜水等&#xff0c;它们通常具有防抖防震、深度防水和高清画质的特点&#xff0c;能够适应颠簸剧烈的环境&#xff0c;甚至可以承受一定程度的摔落&#xff0c;一些运动相…

skywalking展示http请求和响应

1.效果图 可以在请求中看到自定义请求信息input和返回值output&#xff0c;方便快速定位问题 2.添加依赖 <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>9.1.0</version&…

MySQL的Redo Log、Undo Log、Binlog与Replay Log日志

前言 MySQL数据库作为业界最流行的开源关系型数据库之一&#xff0c;其底层实现涉及多种重要的日志机制&#xff0c;其中包括Redo Log、Undo Log、Binlog和Replay Log。这些日志组件共同确保MySQL数据库系统在面对事务处理、数据恢复和主从复制等方面表现出色。本文主要介绍一下…

pytorch 图像的卷积操作

目录 1.卷积核基本参数说明 2.卷积相关操作说明 3.卷积操作示例 1.卷积核基本参数说明 pytorch进行图像卷积操作之前&#xff0c;需要把图像素格式进行分离&#xff0c;比如一个图像为rgb格式&#xff0c;把R&#xff0c;G,B取出来作为一个ndarray&#xff0c;前文讲过&#…

ARM系列 -- 虚拟化(三)

为了实现虚拟化&#xff0c;虚拟机需要控制系统资源。但是实际的系统资源是在hypervisor直接控制之下&#xff0c;为了实现隔离和安全等方面的考虑&#xff0c;不可能让虚拟机直接控制这些系统资源。 比如&#xff0c;虚拟机想根据具体情况去做电源管理。一个解决办法就是利用…

.net 在ubuntu下动态写入 中文字乱码 解决:ubuntu下添加中文字库

.net 在ubuntu下动态写入图片水印 中文字乱码 解决&#xff1a;ubuntu下添加中文字库 1.安装字体命令 sudo apt install -y fontconfig2.查看已安装的字体 &#xff08;1&#xff09;查看linux已安装字体 fc-list&#xff08;2&#xff09;查看linux已安装中文字体 fc-li…

字节面试问题

实现三列布局的方法 第一种&#xff1a;可以使用浮动margin 第二种&#xff1a;浮动BFC <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

力扣 第 386 场周赛 解题报告 | 反悔贪心

力扣 第 386 场周赛 解题报告 | 反悔贪心 前言 整体评价 前两天发烧&#xff0c;今天才补完题&#xff08;非常惭愧&#xff09;第三题的二分不容易想到&#xff0c;第四题的 “反悔堆” 这种思想值得学习。 T1 分割数组 思路&#xff1a;通过哈希表保证不存在出现两次以上…

常见的主流媒体有哪些?主流媒体报道的优势

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体胡老师。 主流媒体通常指的是具有广泛影响力和权威性的媒体机构&#xff0c;它们在新闻报道、舆论引导等方面扮演着重要角色。 常见的主流媒体包括但不限于&#xff1a; 电视媒体&#xff1a;如总台…

PHP+vue+mysql高校学生健康管理系统fe93x

。高校学生健康管理平台采用系统设计遵循界面层、业务逻辑层和数据访问层的Web开发三层架构。采用B/S结构,使得系统更加容易维护。高校学生健康 管理平台主要实现角色有管理员和学生,医护人员,辅导员,管理员在后台管理诊断结果模块、医护咨询模块、医护人员模块、医护回复模块、…

国际黄金价格是什么?和黄金价格有何区别?

黄金是世界上最珍贵的贵金属之一&#xff0c;其价值被无数人所垂涎。而国际黄金价格作为市场上的参考指标&#xff0c;直接影响着黄金交易的买卖。那么国际黄金价格到底是什么&#xff0c;与黄金价格又有何区别呢&#xff1f;本文将为您详细解答。 国际黄金价格是指以美元计量的…