1.图像混合

1.1线性混合

f0和f1分别表示两张图像,g(x)是混合后的图像、

1.2相关API

addWeight(src1,alpha,src2,beta,gamma,dst,dtype),

注意要求两个图像的大小以及类型必须一致才可以混合。

2.图像变换——亮度和对比度调节

2.1概述

图像变换可以看作如下:

  • 像素变换——点操作
  • 邻域操作——区域(卷积或者特征提取)

调整亮度和对比度属于像素变换-点操作

2.2重要的API

  • Mat new_image = Mat::zeros(image.size(),image.type());创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0
  • saturate_cast<uchar>(value)确保值大小范围为0-255
  • Mat.at<Vec3b>[index]=value;给每个像素点每个通道赋值
void MyApi::change_contrasr_brightness(Mat& image)
{Mat dst;int height = image.rows;int width = image.cols;dst = Mat::zeros(image.size(), image.type());float alpha = 1.2;//增加对比度float beta = 100;//增加亮度for (int row = 0; row < height; row++){for (int col = 0; col < width; col++){if (image.channels() == 3){float b = image.at<Vec3b>(row, col)[0];float g = image.at<Vec3b>(row, col)[1];float r = image.at<Vec3b>(row, col)[2];dst.at<Vec3b>(row, col)[0] = saturate_cast<uchar>(b + alpha + beta);dst.at<Vec3b>(row, col)[1] = saturate_cast<uchar>(g + alpha + beta);dst.at<Vec3b>(row, col)[2] = saturate_cast<uchar>(r + alpha + beta);}else if (image.channels() == 1) {float v = image.at<uchar>(row, col);dst.at<uchar>(row, col) = saturate_cast<uchar>(v + alpha + beta);}}}namedWindow("contrast_brightness_change_image", WINDOW_AUTOSIZE);imshow("contrast_brightness_change_image", dst);
}

结果:

C++OpenCV系统学习(3)——图像混合、调整亮度与对比度相关推荐

  1. QT+OpenCV综合示例:图像混合(滑动条)

    QT+OpenCV综合示例:图像混合(滑动条) 1.代码: 2.运行结果: 0)Widget_op.ui (界面文件)设计: 1.代码: 1)opencv_imwrite_Q.pro 添加: INCL ...

  2. OpenCV系统学习(基本了解完)

    1.下载安装.http://blog.csdn.net/poem_qianmo/article/details/19809337 2.框架架构http://blog.csdn.net/poem_qia ...

  3. C++OpenCV系统学习(17)——图像分割与抠图(4)Grabcut

    1.Grabcut介绍 1.1Grabcut概述 Graph cuts是一种十分有用和流行的能量优化算法,在计算机视觉领域普遍应用于前背景分割(Image segmentation).立体视觉(ste ...

  4. C++OpenCV系统学习(17)——图像分割与抠图(6)——视频背景替换

    1.关键知识点 分割算法选择 背景融合-高斯模糊 遮罩层生成 1.1分割算法的选择 GMM/Kmeans:对视频的第一帧做trainning,对其他帧只做预言不做trainning. .基于色彩的处理 ...

  5. Opencv的学习之图像滤波

    python的代码展示 import cv2 import matplotlib.pyplot as pltimg = cv2.imread(r'C:\Users\master\Desktop\HHH ...

  6. OpenCV学习笔记五-图像混合

    将两张图片混合 P6 图像混合 #include<iostream> #include<opencv2/opencv.hpp>using namespace std; usin ...

  7. 【opencv学习笔记】第五篇:访问图像中像素的三种方式、ROI区域图像叠加和图像混合

    1. 访问图像中像素的三种方式 任何图像处理算法,都是从操作每个像素开始的.在OpenCV中,提供了三种访问每个像素的方法. 方法1:指针访问:C操作符[] 方法2:迭代器iterator 方法3:动 ...

  8. 【OpenCV学习笔记】之图像混合、叠加和对比度、亮度调整

    一.图像混合.叠加 图像线性混合的数学原理  :G(x)=(1-a)F(x)+aQ(x) 注意事项: 1,a的取值范围为0到1之间 2,F(x)和Q(x)为参与混合的两幅图像,G(x)表示输出图像 3 ...

  9. OpenCV与图像处理学习二——图像直方图与色彩空间

    OpenCV与图像处理学习二--图像直方图与色彩空间 2.4 图像直方图(Image Histogram) 2.4.1 直方图的绘制 2.4.2 三通道直方图绘制 2.5 颜色空间 2.5.1 RGB ...

最新文章

  1. 【Python】Tkinter 体验
  2. 没附上语音包资源的python文字转语音
  3. python unicodeencodeerror_解决 Python UnicodeEncodeError 错误
  4. [USACO1.2]挤牛奶Milking Cows
  5. JSP的改动需要重启应用服务器才能生效?
  6. 【嵌入式系统复习】嵌入式网络与协议栈
  7. Eclipse Pydev 技巧汇编
  8. 库克:10年内可能离开苹果
  9. php的4种常用运行方式
  10. 【HDOJ6992】Lawn of the Dead(线段树×, 模拟大法好√)
  11. 高效率实现web自动完成功能-三叉搜索树
  12. iOS中的所有字体和UILabel
  13. spring 注入 list和map及enum映射
  14. python webdriver 从无到有搭建混合驱动自动化测试框架的过程和总结
  15. linux如何查看内存命令
  16. 英文信的开头和结尾的客套话有哪些?
  17. C语言递归函数 写一个程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
  18. 测试路由器信号软件,无线信号测试环境及测试方法介绍
  19. 看表情读情绪:AI“察言观色”背后的表情识别数据
  20. 手把手教你快速入门 APP 的开发

热门文章

  1. 朋友圈评论、点赞测试点
  2. JavaScript小白基础学习教程
  3. 软件磁盘阵列(Software RAID)介绍
  4. 2021-01-3 VBA利用企业邮箱自动发送邮件
  5. 沪深A股指数历史分时交易数据API接口(JSON标准格式,Get请求方式)
  6. ggsurvplot_combine R语言 一张图内画多条生存曲线
  7. Jmeter5.x性能压测工具入门介绍
  8. java两个字符串相等却总返回false
  9. 德国海曼红外测温资料
  10. JSPatch转换器:可直接将OC代码转换成JS代码