首页 > 编程语言 >OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)

时间:2022-10-18 13:03:56浏览次数:74  
标签:src -- illuminationChange OpenCV beta 源码 alpha



导读

本期将介绍并演示OpenCV中使用illuminationChange实现图像中局部区域亮度调整的效果。

介绍

OpenCV图像无缝融合-seamlessClone介绍与使用(Python/C++源码)

OpenCV无缝融合应用(二)--指定目标颜色改变(附C++源码)

illuminationChange与seamlessClone和colorChange同属于Seamless Cloning部分,算法均来自下面这篇论文:OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_c++

​https://www.cs.jhu.edu/~misha/Fall07/Papers/Perez03.pdf​

百度网盘下载:

链接:https://pan.baidu.com/s/1Ma_9ZF4r0SgNmfygHe3kgQ

提取码:0857

算法解读可参考下面链接:

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_#include_02

将适当的非线性变换应用于所选内容中的梯度场,然后与泊松解算器集成在一起,可以改变图像局部的亮度,这对于突出曝光不足的前景对象或减少镜面反射很有用。用illuminationChange函数可以将一幅图像中的指定区域的亮度改(变亮(突出曝光不足的前景对象)或变暗(减少镜面反射))并自然融合。函数说明:

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_#include_03

参数:

src

输入8位3通道图像(截取目标的大图)

mask

输入8位1或3通道图像(待改变颜色目标掩码区域图像)

dst

输出结果图(要求和src相同的大小和类型)

alpha

算法中的α值(建议取值范围0.0~2.0)

beta

算法中的β值(建议取值范围0.0~2.0)

效果展示

分别实现指定区域亮度变暗(减少橙子表面因镜面反射造成的曝光过度)和变亮(突出曝光不足的前景对象-人):

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_c++_04

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_滑动条_05

实现步骤与源码

程序实现步骤:

(1) 使用selectROI函数框选指定目标;

(2) 使用;两个滑动条动态改变alpha和beta参数的值;

(3) 滑动条回调函数中使用illuminationChange函数完成亮度改变。

src图:

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_滑动条_06

框选ROI区域设定mask与参数设置(alpha=0.2, beta=0.2)以及运行结果:

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_#include_07

src图:

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_c++_08

鼠标拖动勾选人的轮廓部分(alpha=3.57, beta=0.09)以及运行结果:

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_c++_09

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_c++_10

效果展示以上,C++源码如下:


#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

Mat src;
int alpha = 20, beta = 40;
Rect rect;

void illuminationChange_Callback(int, void*)
{
Mat dst;
Mat mask = Mat::zeros(src.size(), src.type());
rectangle(mask, rect, Scalar::all(255), -1);
illuminationChange(src, mask, dst, alpha / 100.0, beta / 100.0);
imshow("illuminationChange", dst);
}

int main()
{
src = imread("1.png");
rect = selectROI(src, true, false);

namedWindow("illuminationChange", WINDOW_NORMAL);
createTrackbar("alpha", "illuminationChange", &alpha, 300, illuminationChange_Callback);
createTrackbar("beta", "illuminationChange", &beta, 300, illuminationChange_Callback);
illuminationChange_Callback(0, 0);

waitKey();
return 0;
}

更多视觉图像处理相关内容,请长按关注:OpenCV与AI深度学习。

OpenCV无缝融合应用(三)--局部区域亮度调整(附C++源码)_滑动条_11

标签:src,--,illuminationChange,OpenCV,beta,源码,alpha
From: https://blog.51cto.com/stq054188/5765852

相关文章

  • 麦肯锡
     返回Video目录目录1.IntroductionandCourseOverview课程简介1.1Welcome欢迎同学们!Video(00:00:48) 1.2MessagefromDom麦肯锡董事长谈课程设立初衷Video(00:00:5......
  • 儒家修身之道课后考试
     返回儒家修身之道课后考试目录目录第一讲绪论:课程简介及相关预备知识1-1课程简介教学视频:1-1课程简介(00:21:02) 1-2儒家是一门知识而不是宗教教学视频:1-2儒家是一门知识......
  • UMLChina建模竞赛题答案及解析(试卷1)
    建模竞赛题比起《软件方法》书中的题目要更难一些,可以作为熟悉了《软件方法》中的基本知识之后的进一步练习。题目颇有些陷阱,应一些同学的要求,挑部分题目给出答案并详细讲解......
  • C++ | PaddleOCR+OpenCV实现文字识别步骤与代码演示
    导读本期将介绍并演示C++OpenCV使用PaddleOCR做文字识别的步骤与效果。介绍百度深度学习框架PaddlePaddle开源的OCR项目PaddleOCR近期霸榜github。使用测试后发现识别效果......
  • 关于 iPhone 上的相机功能
    关于iPhone上的相机功能了解iPhone上的摄影风格、快录功能、超广角摄像头和其他相机功能。 通过摄影风格功能锁定您的风格借助iPhone13各款机型和iPhoneSE(第3代......
  • 子之是怎样获得燕国权柄的
    周慎靓王五年(前316年),张仪和司马错争论到底要东进还是南下,同一时间,远在东北一隅的燕国在无声无息中酝酿着一场剧变。苏秦既死,秦弟代、厉亦以游说显于诸侯。燕相子之与苏代婚,......
  • UMLChina建模竞赛题答案及解析(添加试卷2解析)
    建模竞赛题比起《软件方法》书中的题目要更难一些,可以作为熟悉了《软件方法》中的基本知识之后的进一步练习。题目颇有些陷阱,应一些同学的要求,挑部分题目给出答案并详细讲解......
  • 软件需求设计方法学全程实例剖析幻灯片04-需求(2020.03更新)
    pdf文件下载​​http://www.umlchina.com/training/slide.html​​......
  • Installing Gradle
    Chapter 4. InstallingGradle4.1. PrerequisitesGradlerequiresaJavaJDKorJREtobeinstalled,version6orhigher(tocheck,use ​​java-version​​).......
  • UMLChina建模竞赛题答案及解析(添加试卷5和6解析)
    建模竞赛题比起《软件方法》书中的题目要更难一些,可以作为熟悉了《软件方法》中的基本知识之后的进一步练习。题目颇有些陷阱,应一些同学的要求,挑部分题目给出答案并详细讲解......