iis服务器助手广告
返回顶部
首页 > 资讯 > 移动开发 >Android基于OpenCV实现图像脱色
  • 471
分享到

Android基于OpenCV实现图像脱色

2024-04-02 19:04:59 471人浏览 泡泡鱼
摘要

目录脱色原理api操作效果源码脱色 Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)可以快速的实现图片脱色,其通过简单的计算将

脱色

Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)可以快速的实现图片脱色,其通过简单的计算将三通道图像转换成单通道图像,经典的灰度转换公式如下:

但是转换过的图像存在对比度丢失,无法区分颜色的问题。OpenCV给我们提供另外一种脱色方法Photo.decolor,旨在最大限度的保留图片对比度。

原理

论文详情:www.cse.cuhk.edu.hk/~leojia/pro…

论文pdf:www.computer.org/csdl/pds/ap…

相比于简单的使用R/G/B线性组合,作者构造了更为复杂的多项式拟合,向量空间的基底为:[r,g,b,rg,rb,gb,r2,g2,b2],核心就是求取灰度化函数:

API


public static void decolor(Mat src, Mat grayscale, Mat color_boost) 
  • 参数一:src,输入8位三通道图像。
  • 参数二:grayscale,输出8位单通道灰度图。
  • 参数三:color_boost,输出8位三通道图像。对比度增强后的图像。

操作



class DecolorActivity : AppCompatActivity() {

    private val mBinding: ActivityDecolorBinding by lazy {
        ActivityDecolorBinding.inflate(layoutInflater)
    }

    private val mList = mutableListOf<ImageTextObject>()
    private lateinit var mAdapter: ImageTextAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(mBinding.root)
        mAdapter = ImageTextAdapter(this, mList)
        mBinding.container.adapter = mAdapter
        val bgr = Utils.loadResource(this, R.drawable.ceil)
        val rgb = Mat()
        Imgproc.cvtColor(bgr, rgb, Imgproc.COLOR_BGR2RGB)
        val gray = Mat()
        val dst = Mat()
        val boost = Mat()
        mBinding.isLoading = true
        GlobalScope.launch(Dispatchers.io) {
            Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)
            Photo.decolor(rgb, dst, boost)
            launch(Dispatchers.Main) {
                mList.add(ImageTextObject(rgb, "原图"))
                mList.add(ImageTextObject(gray, "RGB2GRAY"))
                mList.add(ImageTextObject(dst, "DeColor"))
                mList.add(ImageTextObject(boost, "ColorBoosting"))
                mAdapter.notifyItemRangeInserted(0, 4)
                mBinding.isLoading = false
            }
        }
    }
}

效果

分别采用decolor和RGB2GRAY实现的脱色效果图,在对比度和颜色保留上效果相差很大。

源码

GitHub.com/onlyloveyd/…

以上就是Android基于OpenCV实现图像脱色的详细内容,更多关于Android OpenCV图像脱色的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android基于OpenCV实现图像脱色

本文链接: https://www.lsjlt.com/news/128562.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android基于OpenCV实现图像脱色
    目录脱色原理API操作效果源码脱色 Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY)可以快速的实现图片脱色,其通过简单的计算将...
    99+
    2024-04-02
  • Android基于OpenCV实现图像修复
    目录图像修复API操作效果源码图像修复 实际应用中,图像常常容易受损,如存在污渍的镜头、旧照片的划痕、人为的涂画(比如马赛克),亦或是图像本身的损坏。将受到损坏的图像尽可能还原成原...
    99+
    2024-04-02
  • Android基于OpenCV实现图像金字塔
    目录图像金字塔 高斯金字塔 拉普拉斯金字塔 API 下采样上采样操作操作效果源码 图像金字塔 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的...
    99+
    2024-04-02
  • 基于OpenCV实现图像分割
    本文实例为大家分享了基于OpenCV实现图像分割的具体代码,供大家参考,具体内容如下 1、图像阈值化 源代码: #include "opencv2/highgui/highgui...
    99+
    2024-04-02
  • 基于Qt OpenCV怎么实现图像灰度化像素
    这篇文章主要介绍了基于Qt OpenCV怎么实现图像灰度化像素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Qt OpenCV怎么实现图像灰度化像素文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-02
  • 基于Opencv的图像卡通化实现代码
    OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windo...
    99+
    2024-04-02
  • 基于OpenCV与JVM实现矩阵处理图像
    目录图片裁剪图片模糊处理子矩阵生成矩阵从图片子矩阵生成矩阵submat(int rowStart, int rowEnd, int colStart, int colEnd) 函数的...
    99+
    2024-04-02
  • 基于OpenCV-python3实现抠图
    在上一篇博客进行了证件照更换背景颜色,纯蓝色,红色,白色之间的替换,有人私信我,可以不可以把背景换成其他图片,而不是单纯的颜色填充。这在photoshop里面就是选中一个图层然后复制到另外一张图片上去,用代码实现的话和上篇博文换...
    99+
    2023-01-31
    抠图 OpenCV
  • 基于OpenCV自定义色条实现灰度图上色功能代码
    场景需求        Qt在进行2D图像显示时,有很方便的色条接口,可以让灰度图基于其设计的色条进行上色,比如设置1为红色,0.55为黄色,0.45为绿色,0为蓝色,那么灰度图就会...
    99+
    2024-04-02
  • 基于OpenCv与JVM实现加载保存图像功能(JAVA 图像处理)
    目录加载图片保存图片加载图片 openCv有一个名imread的简单函数,用于从文件中读取图像 imread 函数位于Imgcodecs类的同名包中。 加载图片代码 import ...
    99+
    2024-04-02
  • Android基于OpenCV实现非真实渲染
    目录非真实渲染API边缘保留滤波细节增强素描铅笔画风格化操作效果非真实渲染 非真实感渲染(Non Photorealistic Rendering,简称NPR),是指利用计算机模...
    99+
    2024-04-02
  • 基于Qt OpenCV怎么实现图像数据采集软件
    这篇文章主要介绍“基于Qt OpenCV怎么实现图像数据采集软件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Qt OpenCV怎么实现图像数据采集软件”文章能帮助大家解决问...
    99+
    2023-07-02
  • 基于OpenCV如何生成图像直方图
    这篇文章将为大家详细讲解有关基于OpenCV如何生成图像直方图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。01. 什么是图像直方图?在开始定义直方图之前,为简单起见我们先使用灰度图像,稍后再解释彩色图像...
    99+
    2023-06-14
  • Android基于OpenCV实现Harris角点检测
    目录什么是角点? 为什么要检测角点? Harris角点检测 API操作效果 源码 什么是角点? 角点就是极值点,即在某方面属性特别突出的点。当然,你可以自己定义角点的属性(设置特定...
    99+
    2024-04-02
  • 基于OpenCv与JVM如何实现加载保存图像功能
    今天给大家介绍一下基于OpenCv与JVM如何实现加载保存图像功能。,文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。加载图片openCv有一个名imread的简...
    99+
    2023-06-26
  • OpenCV基于距离变换和分水岭实现图像分割
    目录一.图像分割二.基于距离变换和分水岭的图像分割代码实现图像处理效果一.图像分割 图像分割是根据灰度、颜色、纹理和形状等特征,把图像分成若干个特定的、具有独特性质的区域,这些特征在...
    99+
    2024-04-02
  • 基于OpenCV实现小型的图像数据库检索功能
    本文对前面的几篇文章进行个总结,实现一个小型的图像检索应用。 一个小型的图像检索应用可以分为两部分: train,构建图像集的特征数据库。 retrieval,检索...
    99+
    2024-04-02
  • Python+OpenCV实现基于颜色的目标识别
    目录任务主要代码效果展示学习了一点opencv的知识于是找了个小项目来实践一下。这里先说明一下,我的实现方法不见得是最好的(因为这只是一个用于练习的项目)仅作参考,也欢迎各位大佬指正...
    99+
    2024-04-02
  • OpenCV基于分水岭算法的图像分割怎么实现
    本文小编为大家详细介绍“OpenCV基于分水岭算法的图像分割怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenCV基于分水岭算法的图像分割怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. ...
    99+
    2023-07-05
  • Python OpenCV 彩色与灰度图像的转换实现
    彩色图像转换为灰度图像 第一种方式通过 imread 读取图像的时候直接设置参数为 0 ,自动转换彩色图像为灰度图像 第二种方式,可以通过 split 进行通道分离,或者叫做读取单个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作