使用OpenCV执行图像算法(加法和减法)以提亮图像或者使图像变暗
使用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执行图像算法(加法和减法)以提亮图像或者使图像变暗相关推荐
- oracle执行减法,oracle时间的加法和减法
对于oracle时间,我们可以根据我们实际的需求,进行加减法计算.下面就为您详细介绍oracle时间的加法和减法,希望对您学习oracle时间方面能有所帮助. 加法 select sysdate,ad ...
- 基于STM32实现I2C从机的数字数学计算器:用于执行加法、减法和乘法操作的深度解析及应用
一.引言 在许多现代电子设备中,微控制器都是至关重要的组成部分,其作用是控制和处理系统内部的各种操作.我们经常遇到一种情况,即需要微控制器与其他设备进行通信以接收或传递信息.在这种情况下,I2C(In ...
- 汇编语言加法和减法详解
算术运算是汇编语言中一个大得令人惊讶的主题!本节重点在于加法和减法的运算. 先从最简单.最有效的指令开始:INC(增加)和 DEC(减少)指令,即加 1 和减 1.然后是能提供更多操作的 ADD.SU ...
- Java大数加法乘法减法、36进制加法
文章目录 大数加法 大数减法 c++版本 Java版本 大数乘法 36进制加法 c++版 Java版 大数加法 1.是整数: 2.两个数无限大,long都装不下: 3.不能用BigInteger: 4 ...
- C语言单链表实现多项式的加法、减法、乘法
C语言采用单链表存储结构实现多项式的加法.减法.乘法的代码实现 #include <stdio.h> #include <stdlib.h> typedef struct po ...
- 经典的大数的加法、减法、乘法及阶乘
大数加法 你需要知道的事:两个长度分别为length1和length2(length2 > length1)的正整数,如果相减则可能是一个长度为length2或者length2 - 1的数,如果 ...
- java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...
[简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...
- 周鸿祎的“加法”和“减法”
这又是一次周鸿祎式的造鼎之作,从中可以看出,周鸿祎欲打造软件帝国的梦想实则埋藏至深.可能有人会认为这只是一项近乎疯狂的投资,但在笔者看来,周鸿祎仅仅只是在做一道初级的算术题,里面只有加法和减法. 最近 ...
- 两个多精度十进制数加法程序设计_初中数学之有理数的加减,学会加法,减法即会,掌握技巧轻松计算...
学习了有理数中的相关知识点,关于有理数的加减运算,也是考试中必考的内容,尤其是对于刚进入初中的学生来说,小数的时候学的加减法,到了初中突然发现数字前面有带符号了,其实整体而言,小学时候学的加减运算法则 ...
最新文章
- 要命的定义函数。。。参数组合。请认真理解!
- 新学C++的for,switch和随机数
- 为什么前端开发这么不稳定?
- 查看ocx控件方法_Appium自动化测试入门教程No.8——定位控件
- JZOJ 5182. 【NOIP2017提高组模拟6.29】码灵鼠
- Cakephp事件机制尝鲜
- (王道408考研数据结构)第六章图-第四节2:最小生成树之克鲁斯卡尔算法(思想、代码、演示、答题规范)
- 2小时c++与ros教学
- webpack2 项目构建一
- OpenSessionInViewFilter失效问题
- python语言标识符命名规则_Python标识符
- 京瓷1020手动双面打印提示_解决京瓷2201复印机不能双面打印问题
- 计算机硬件维护注意事项,电脑硬件日常维护和注意事项
- ios13.5.1降级_升级iOS 14尝鲜后 无法降级iOS13.5.1?
- Win10 下搭建PHP开发环境(自定义方式)
- 推荐一款MD5解密在线网站
- Springboot毕业设计毕设作品,人脸识别签到考勤系统设计与实现
- 150行Python代码模拟太阳系行星运转
- 数据结构实验-稀疏一元多项式计算
- 跳伞求生服务器未响应,绝地求生跳伞就未响应 | 手游网游页游攻略大全
热门文章
- PHP 算法题:有多少苹果用来分赃1.1
- C++ 字符串字母大小写转换
- Ubuntu 系统开机黑屏提示the root filesystem on /dev/sdb2 requires a manual fsck
- Java--对象与类(三)
- HTML5与CSS3权威指南之CSS3学习记录
- 2022-2028年中国生物类似药产业深度调研及前瞻分析报告
- 2022-2028年中国摩托车行业投资分析及前景预测报告(全卷)
- 2022-2028年中国服装电商行业发展战略规划及投资方向研究报告
- 2022-2028年中国商贸物流行业市场前瞻与投资战略规划分析报告
- 尝试插入cctv视频