首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

opencv进阶学习笔记3:像素运算和图像亮度对比度调节

  • 23-09-22 21:02
  • 4160
  • 9487
blog.csdn.net

基础版传送门:
python3+opencv学习笔记汇总目录(适合基础入门学习)
进阶版目录:
python+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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

黑色为0 白色为255. 相加值超过255截断。

减法运算
cv2.subtract(m1, m2)

def subtract_demo(m1, m2):
    dst = cv.subtract(m1, m2)
    cv.imshow("subtract_demo", dst)
  • 1
  • 2
  • 3

除法运算
dst = cv2.divide(m1, m2)

def divide_demo(m1, m2):
    dst = cv.divide(m1, m2)
    cv.imshow("divide_demo", dst)
  • 1
  • 2
  • 3

除法得到的是很小的数值,一片黑

乘法运算
dst = cv2.multiply(m1, m2)

def multiply_demo(m1, m2):
    dst = cv.multiply(m1, m2)
    cv.imshow("multiply_demo", dst)
  • 1
  • 2
  • 3

发现原始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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

每个通道一个颜色

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

图片格式是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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

其中c越大,越亮。
起作用的是系数1,和亮度调节量。
系数2乘以的是全0数组,无用,放在这里起传参作用。

电气专业的计算机萌新,写博文不容易。如果你觉得本文对你有用,请点个赞支持下。谢谢。

文章知识点与官方知识档案匹配,可进一步学习相关知识
OpenCV技能树进阶任务OpenCV问答20473 人正在系统学习中
注:本文转载自blog.csdn.net的总裁余(余登武)的文章"https://blog.csdn.net/kobeyu652453/article/details/107249269"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top