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

OpenCV-滤波矩阵(java版)

滤波矩阵

  • multiply()

用下图做演示
在这里插入图片描述

multiply()

顾名思义,乘法函数。使用该函数可以将像素的每个通道值乘以这个参数。

方法说明
multiply(Mat src1, Scalar src2, Mat dst, double scale, int dtype) src1:原图像
src2:颜色矩阵
scale:src2矩阵参数的乘数值(从图像的角度来说,可以理解为亮度值,值越大,图像越亮)
dst:目标图像
dtype:图像(矩阵)类型
multiply(Mat src1, Scalar src2, Mat dst, double scale)
multiply(Mat src1, Scalar src2, Mat dst)
例:当 src2为[0.0,0.5,1.0]时候,表示在原矩阵像素值的基础上,蓝色通道值乘以0,绿色通道值乘以0.5,红色通道值乘以0(当最终通道值大于255时,通道值为255)
scale:表示在src通道的基础上乘以相对应的scale值,比如scale为3时,结合前面的src2矩阵,此时src2矩阵值变为[0.0,1.5,3.0]
为验证结果,下面创建一个3*3,像素值为[122,122,122]的矩阵图 示例:
    public static void main(String[] args) {
        String libraryPath= System.getProperty("user.dir")+"\\lib\\opencv_java460.dll";
        System.load(libraryPath);
        Mat mat = new Mat(3,3, CvType.CV_8UC3,new Scalar(122,122,122));
        System.out.println("mat1>>"+mat.dump());
        Core.multiply(mat,new Scalar(0.0,0.5,1.0),mat,3,CvType.CV_8UC3);
        System.out.println("mat2>>"+mat.dump()+"=="+mat);
        HighGui.imshow("mat",mat);
        HighGui.waitKey(0);
    }

执行结果

mat1>>[122, 122, 122, 122, 122, 122, 122, 122, 122;
122, 122, 122, 122, 122, 122, 122, 122, 122;
122, 122, 122, 122, 122, 122, 122, 122, 122]
mat2>>[ 0, 183, 255, 0, 183, 255, 0, 183, 255;
0, 183, 255, 0, 183, 255, 0, 183, 255;
0, 183, 255, 0, 183, 255, 0, 183, 255]==Mat [ 33CV_8UC3, isCont=true, isSubmat=false, nativeObj=0xbdaeb0, dataAddr=0xbdb100 ]

读取图像
示例:

    public static void main(String[] args) {
        String libraryPath= System.getProperty("user.dir")+"\\lib\\opencv_java460.dll";
        System.load(libraryPath);
        Mat mat = Imgcodecs.imread("flower.jpg");
        Core.multiply(mat,new Scalar(0.0,0.5,1.0),mat,1.0,CvType.CV_8UC3);
        HighGui.imshow("mat",mat);
        HighGui.waitKey(0);
    }

结果
在这里插入图片描述
亮度演示:
示例:

    public static void main(String[] args) {
        String libraryPath= System.getProperty("user.dir")+"\\lib\\opencv_java460.dll";
        System.load(libraryPath);
        Mat mat = Imgcodecs.imread("flower.jpg");
        //为演示效果,将Scalar设为(1.0,1.0,1.0)
        Core.multiply(mat,new Scalar(1.0,1.0,1.0),mat,2.0,CvType.CV_8UC3);
        HighGui.imshow("mat",mat);
        HighGui.waitKey(0);
    }

结果:在这里插入图片描述

相关文章:

  • 前端性能优化 - 华为面试题
  • netsh命令设置IP地址/DNS服务器地址(域设置)
  • 【Python 小白到精通 | 课程笔记】第三章:数据处理就像侦探游戏(函数和包)
  • 以太坊未来⼗年的的破局之路:区块链模块化+合并成功后,以太坊交易者需要读懂这些数据
  • 使用Vue和SpringBoot开发实验室耗材智能运维系统
  • kubernetes(9)集群安全机制
  • Google Earth Engine (GEE) ——加载2015年乌干达MODIS的LST并绘制时序图
  • 【Linux初阶】Linux下用户的新建和删除 | 查看服务器用户数、在线数、当前用户
  • 2022华为杯研究生数学建模赛题思路分析
  • PTA 3+2 转段考试 数据库mysql(3篇)
  • 【C语言进阶】函数栈帧的创建和销毁(内功修炼)
  • 结构体数组与结构体指针
  • PTA 3+2 转段考试 数据库 mysql(3篇)
  • 技术创新助力港口自动化与智能化
  • 【Day22】力扣LeetCode算法刷题[811. 子域名访问计数]
  • Angular Elements 及其运作原理
  • Brief introduction of how to 'Call, Apply and Bind'
  • HomeBrew常规使用教程
  • Laravel 实践之路: 数据库迁移与数据填充
  • Vue官网教程学习过程中值得记录的一些事情
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 分享一份非常强势的Android面试题
  • 好的网址,关于.net 4.0 ,vs 2010
  • 记一次和乔布斯合作最难忘的经历
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 聊一聊前端的监控
  • 码农张的Bug人生 - 初来乍到
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 我的业余项目总结
  • 用jQuery怎么做到前后端分离
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​比特币大跌的 2 个原因
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • (06)金属布线——为半导体注入生命的连接
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)JAVA使用POI操作excel
  • (论文阅读30/100)Convolutional Pose Machines
  • (七)Java对象在Hibernate持久化层的状态
  • (四)模仿学习-完成后台管理页面查询
  • (转载)Linux 多线程条件变量同步
  • (状压dp)uva 10817 Headmaster's Headache
  • **PHP二维数组遍历时同时赋值
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET框架
  • ??在JSP中,java和JavaScript如何交互?
  • @media screen 针对不同移动设备
  • [2016.7 day.5] T2
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [BROADCASTING]tensor的扩散机制
  • [Java基础]—JDBC
  • [Jenkins] Docker 安装Jenkins及迁移流程
  • [Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解