使用OpenCV执行图像算法(加法和减法)以提亮图像或者使图像变暗
生活随笔
收集整理的這篇文章主要介紹了
使用OpenCV执行图像算法(加法和减法)以提亮图像或者使图像变暗
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
使用OpenCV執(zhí)行圖像算法(加法和減法)以提亮圖像或者使圖像變暗
- 1. 效果圖
- 2. 源碼
- 參考
這篇博客將介紹如何使用OpenCV執(zhí)行圖像算術(shù)(加法和減法)。可以通過(guò)倆種方法實(shí)現(xiàn):
1. 使用OpenCV的cv2.add和cv2.subtract;
2. 使用Numpy的基本加法和減法運(yùn)算符。
- OpenCV和NumPy 之間有區(qū)別;OpenCV執(zhí)行剪裁,以確保像素值不會(huì)超出范圍[0,255];
- NumPy將執(zhí)行模數(shù)運(yùn)算并“環(huán)繞”,以確保像素在[0,255];
圖像算法用于創(chuàng)建可以調(diào)整亮度和對(duì)比度的函數(shù)、應(yīng)用alpha混合和透明度、以及創(chuàng)建類似Instagram的過(guò)濾器。
1. 效果圖
原始圖如下:
畫(huà)面整體調(diào)亮后效果圖如下,會(huì)發(fā)現(xiàn)部分地方已經(jīng)變白色了~
畫(huà)面整體調(diào)暗后效果圖如下,會(huì)發(fā)現(xiàn)很黑~
2. 源碼
# USAGE
# python image_arithmetic.py# 將演示OpenCV和NumPy中加法和減法運(yùn)算之間的區(qū)別/注意事項(xiàng)。
# 以及如何手動(dòng)調(diào)整圖像的亮度。import argparseimport cv2
import imutils
# 導(dǎo)入必要的包
import numpy as np # 進(jìn)行數(shù)值數(shù)組處理# 構(gòu)建命令行參數(shù)及解析
# --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())# 圖像表現(xiàn)為Numpy數(shù)組(無(wú)符號(hào)8位整形,unint8,[0,255],
# 當(dāng)執(zhí)行cv2的加、減位于0~255之外時(shí),會(huì)裁剪以保證在[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算數(shù)運(yùn)算符,將執(zhí)行模運(yùn)算或者環(huán)繞而不是裁剪,以保證結(jié)果位于[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)# 通過(guò)每個(gè)像素加定量100提升亮度
M = np.ones(image.shape, dtype="uint8") * 100
added = cv2.add(image, M)
cv2.imshow("Lighter", added)# 相同的方法,每個(gè)像素減去50以調(diào)暗圖像
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/
總結(jié)
以上是生活随笔為你收集整理的使用OpenCV执行图像算法(加法和减法)以提亮图像或者使图像变暗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 佛脚清泉飘飘飘飘的下一句是什么啊?
- 下一篇: 使用Python,OpenCV制作图像M