使用OpenCV执行图像算法(加法和减法)以提亮图像或者使图像变暗

  • 1. 效果图
  • 2. 源码
  • 参考

这篇博客将介绍如何使用OpenCV执行图像算术(加法和减法)。可以通过俩种方法实现:

1. 使用OpenCV的cv2.add和cv2.subtract;

2. 使用Numpy的基本加法和减法运算符。

  • OpenCV和NumPy 之间有区别;OpenCV执行剪裁,以确保像素值不会超出范围[0,255];
  • NumPy将执行模数运算并“环绕”,以确保像素在[0,255];

图像算法用于创建可以调整亮度和对比度的函数、应用alpha混合和透明度、以及创建类似Instagram的过滤器。

1. 效果图

原始图如下:
画面整体调亮后效果图如下,会发现部分地方已经变白色了~

画面整体调暗后效果图如下,会发现很黑~

2. 源码

# USAGE
# python image_arithmetic.py# 将演示OpenCV和NumPy中加法和减法运算之间的区别/注意事项。
# 以及如何手动调整图像的亮度。import argparseimport cv2
import imutils
# 导入必要的包
import numpy as np  # 进行数值数组处理# 构建命令行参数及解析
# --image 图像路径,非必须
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", type=str, default="djfj.jpg",help="path to the input image")
args = vars(ap.parse_args())# 图像表现为Numpy数组(无符号8位整形,unint8,[0,255],
# 当执行cv2的加、减位于0~255之外时,会裁剪以保证在[0,255]之间)
added = cv2.add(np.uint8([200]), np.uint8([100]))
subtracted = cv2.subtract(np.uint8([50]), np.uint8([100]))
print("max of 255: {}".format(added))
print("min of 0: {}".format(subtracted))# 使用Numpy算数运算符,将执行模运算或者环绕而不是裁剪,以保证结果位于[0,255]
added = np.uint8([200]) + np.uint8([100])
subtracted = np.uint8([50]) - np.uint8([100])
print("wrap around: {}".format(added))
print("wrap around: {}".format(subtracted))# 加载原始图像并展示
image = cv2.imread(args["image"])
image = imutils.resize(image, width=500)
cv2.imshow("Original", image)# 通过每个像素加定量100提升亮度
M = np.ones(image.shape, dtype="uint8") * 100
added = cv2.add(image, M)
cv2.imshow("Lighter", added)# 相同的方法,每个像素减去50以调暗图像
M = np.ones(image.shape, dtype="uint8") * 50
subtracted = cv2.subtract(image, M)
cv2.imshow("Darker", subtracted)
cv2.waitKey(0)cv2.destroyAllWindows()

参考

  • https://www.pyimagesearch.com/2021/01/19/image-arithmetic-opencv/

使用OpenCV执行图像算法(加法和减法)以提亮图像或者使图像变暗相关推荐

  1. oracle执行减法,oracle时间的加法和减法

    对于oracle时间,我们可以根据我们实际的需求,进行加减法计算.下面就为您详细介绍oracle时间的加法和减法,希望对您学习oracle时间方面能有所帮助. 加法 select sysdate,ad ...

  2. 基于STM32实现I2C从机的数字数学计算器:用于执行加法、减法和乘法操作的深度解析及应用

    一.引言 在许多现代电子设备中,微控制器都是至关重要的组成部分,其作用是控制和处理系统内部的各种操作.我们经常遇到一种情况,即需要微控制器与其他设备进行通信以接收或传递信息.在这种情况下,I2C(In ...

  3. 汇编语言加法和减法详解

    算术运算是汇编语言中一个大得令人惊讶的主题!本节重点在于加法和减法的运算. 先从最简单.最有效的指令开始:INC(增加)和 DEC(减少)指令,即加 1 和减 1.然后是能提供更多操作的 ADD.SU ...

  4. Java大数加法乘法减法、36进制加法

    文章目录 大数加法 大数减法 c++版本 Java版本 大数乘法 36进制加法 c++版 Java版 大数加法 1.是整数: 2.两个数无限大,long都装不下: 3.不能用BigInteger: 4 ...

  5. C语言单链表实现多项式的加法、减法、乘法

    C语言采用单链表存储结构实现多项式的加法.减法.乘法的代码实现 #include <stdio.h> #include <stdlib.h> typedef struct po ...

  6. 经典的大数的加法、减法、乘法及阶乘

    大数加法 你需要知道的事:两个长度分别为length1和length2(length2 > length1)的正整数,如果相减则可能是一个长度为length2或者length2 - 1的数,如果 ...

  7. java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...

    [简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...

  8. 周鸿祎的“加法”和“减法”

    这又是一次周鸿祎式的造鼎之作,从中可以看出,周鸿祎欲打造软件帝国的梦想实则埋藏至深.可能有人会认为这只是一项近乎疯狂的投资,但在笔者看来,周鸿祎仅仅只是在做一道初级的算术题,里面只有加法和减法. 最近 ...

  9. 两个多精度十进制数加法程序设计_初中数学之有理数的加减,学会加法,减法即会,掌握技巧轻松计算...

    学习了有理数中的相关知识点,关于有理数的加减运算,也是考试中必考的内容,尤其是对于刚进入初中的学生来说,小数的时候学的加减法,到了初中突然发现数字前面有带符号了,其实整体而言,小学时候学的加减运算法则 ...

最新文章

  1. 要命的定义函数。。。参数组合。请认真理解!
  2. 新学C++的for,switch和随机数
  3. 为什么前端开发这么不稳定?
  4. 查看ocx控件方法_Appium自动化测试入门教程No.8——定位控件
  5. JZOJ 5182. 【NOIP2017提高组模拟6.29】码灵鼠
  6. Cakephp事件机制尝鲜
  7. (王道408考研数据结构)第六章图-第四节2:最小生成树之克鲁斯卡尔算法(思想、代码、演示、答题规范)
  8. 2小时c++与ros教学
  9. webpack2 项目构建一
  10. OpenSessionInViewFilter失效问题
  11. python语言标识符命名规则_Python标识符
  12. 京瓷1020手动双面打印提示_解决京瓷2201复印机不能双面打印问题
  13. 计算机硬件维护注意事项,电脑硬件日常维护和注意事项
  14. ios13.5.1降级_升级iOS 14尝鲜后 无法降级iOS13.5.1?
  15. Win10 下搭建PHP开发环境(自定义方式)
  16. 推荐一款MD5解密在线网站
  17. Springboot毕业设计毕设作品,人脸识别签到考勤系统设计与实现
  18. 150行Python代码模拟太阳系行星运转
  19. 数据结构实验-稀疏一元多项式计算
  20. 跳伞求生服务器未响应,绝地求生跳伞就未响应 | 手游网游页游攻略大全

热门文章

  1. PHP 算法题:有多少苹果用来分赃1.1
  2. C++ 字符串字母大小写转换
  3. Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
  4. Java--对象与类(三)
  5. HTML5与CSS3权威指南之CSS3学习记录
  6. 2022-2028年中国生物类似药产业深度调研及前瞻分析报告
  7. 2022-2028年中国摩托车行业投资分析及前景预测报告(全卷)
  8. 2022-2028年中国服装电商行业发展战略规划及投资方向研究报告
  9. 2022-2028年中国商贸物流行业市场前瞻与投资战略规划分析报告
  10. 尝试插入cctv视频