荐 opencv进阶学习笔记3:像素运算和图像亮度对比度调节
基础版传送门:
python3+opencv学习笔记汇总目录(适合基础入门学习)
像素运算
要求两张图大小,以及格式(np.uint8)完全一致,否则报错。
算术运算有加减惩除。应用它调节亮度和对比度。
逻辑运算:与或非,应用:遮罩层控制
1.像素算术运算
加法运算
cv2.add(m1, m2)
import cv2 as cv
import numpy as np
def add_demo(m1, m2):
dst = cv.add(m1, m2)
cv.imshow("add_demo", dst)
print("--------- Hello Python ---------")
src1 = cv.imread("linux logo.jpg")
src2 = cv.imread("Windowslogo.jpg")
src1=cv.resize(src1,(400,300))
src2=cv.resize(src2,(400,300))
cv.imshow("image1", src1)
cv.imshow("image2", src2)
add_demo(src1, src2)#加法
cv.waitKey(0)
cv.destroyAllWindows()
黑色为0 白色为255. 相加值超过255截断。
减法运算
cv2.subtract(m1, m2)
def subtract_demo(m1, m2):
dst = cv.subtract(m1, m2)
cv.imshow("subtract_demo", dst)
除法运算
dst = cv2.divide(m1, m2)
def divide_demo(m1, m2):
dst = cv.divide(m1, m2)
cv.imshow("divide_demo", dst)
除法得到的是很小的数值,一片黑
乘法运算
dst = cv2.multiply(m1, m2)
def multiply_demo(m1, m2):
dst = cv.multiply(m1, m2)
cv.imshow("multiply_demo", dst)
发现原始linux图中的黑色并不是完全为0,是 接近0的存在。
均值,方差
均值:cv2.mean(src)
方差:m, dev = cv.meanStdDev(img) 返回均值和方差
import cv2 as cv
import numpy as np
print("--------- Hello Python ---------")
src1 = cv.imread("linux logo.jpg")
src2 = cv.imread("Windowslogo.jpg")
src1=cv.resize(src1,(400,300))
src2=cv.resize(src2,(400,300))
print('src1均值:',cv.mean(src1))
print('src2均值:',cv.mean(src2))
每个通道一个颜色
2.像素逻辑运算
dst = cv2.bitwise_and(m1, m2,mask)。与或非都有mask选项
为除去mask部分的图进行逻辑运算。
可以参考
opencv进阶学习笔记2:numpy操作图像,色彩空间,查找指定颜色范围,通道分离与合并
文中讲到mask运用。
与运算:dst = cv2.bitwise_and(m1, m2)
import cv2 as cv
import numpy as np
def logic_demo(m1, m2):
dst = cv.bitwise_and(m1, m2)
cv.imshow("logic_demo", dst)
print("--------- Hello Python ---------")
src1 = cv.imread("linux logo.jpg")
src2 = cv.imread("Windowslogo.jpg")
src1=cv.resize(src1,(400,300))
src2=cv.resize(src2,(400,300))
cv.imshow("image1", src1)
cv.imshow("image2", src2)
logic_demo(src1, src2)#与
cv.waitKey(0)
cv.destroyAllWindows()
图片格式是np.uint8 ,8位二进制,可以进行逻辑运算
或运算:dst = cv2.bitwise_or(m1, m2)
非运算:dst = cv2.bitwise_not(m1)
图像亮度对比度调节
cv2.addWeighted(图像1,系数1,图像2,系数2,亮度调节量)
亮度调节量:为给每一张图的像素加上亮度调节量。
dst = src1系数1 + src2系数2 + 亮度调节量;
import cv2 as cv
import numpy as np
def contrast_brightness_demo(image, c, b):
h, w, ch = image.shape
blank = np.zeros([h, w, ch], image.dtype)#空白图像,全黑
dst = cv.addWeighted(image, c, blank, 1-c, b)
cv.imshow("con-bri-demo", dst)
print("--------- Hello Python ---------")
src = cv.imread("andu.jpg")
cv.imshow("image", src)
contrast_brightness_demo(src, 3, 0)
cv.waitKey(0)
cv.destroyAllWindows()
其中c越大,越亮。
起作用的是系数1,和亮度调节量。
系数2乘以的是全0数组,无用,放在这里起传参作用。
电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下。谢谢。
本文地址:https://blog.csdn.net/kobeyu652453/article/details/107249269
上一篇: 美国GoDaddy多站点主机方案对比
下一篇: 做淘宝客网站,选择比努力更重要!