【OpenCV】像素的运算


   像素运算要求两个图像的大小一致,类型也要一致。

1.算数运算

  加、减、乘、除
  应用:调节亮度和对比度

import cv2 as cv
'''
黑色:0  白色:255
(1)加法运算:
    注意如果相加的像素值大于255则截断为255
    dst=cv.add(img1,img2)
    
(2)减法运算:
    dst=cv.subtract(m1,m2)
    
(3)乘法运算
    dst=cv.multiply(m1,m2)
    
(4)除法运算
    dst=cv.multiply(m1,m2)
'''
def add_demo(m1,m2):
    dst=cv.add(m1,m2)
    cv.imshow('add demo',dst)
def subtract_demo(m1,m2):
    dst=cv.subtract(m1,m2)
    cv.imshow('subtract demo',dst)
def multiply_demo(m1,m2):
    dst=cv.multiply(m1,m2)
    cv.imshow('multiply demo',dst)
def divide_demo(m1,m2):
    dst=cv.divide(m1,m2)
    cv.imshow('divide demo',dst)
#均值,得到每个通道的均值
#方差
def others(m1):
    mea=cv.mean(m1)#均值
    h,dev=cv.meanStdDev(m1)#均值和标准方差
    print(mea)
    print(h,dev)
    
m1=cv.imread(r'D:\Project\Opencv\Learning01\angelababy.jpg')
m2=cv.imread(r'D:\Project\Opencv\Learning01\angelababy_gray.jpg')

add_demo(m1,m2)
subtract_demo(m1,m2)
multiply_demo(m1,m2)
divide_demo(m1,m2)
others(m1)

cv.waitKey(0)

2.逻辑运算

  与、或、非
  应用:遮罩层控制

import cv2 as cv
'''
逻辑与:
  dst=cv.bitwise_and(m1,m2)
逻辑或:
  dst=cv.bitwise_or(m1,m2)
逻辑非
  dst=cv.bitwise_not(m1,m2)
    
'''
def logic_demo_and(m1,m2):
    dst=cv.bitwise_and(m1,m2)
    cv.imshow('logic_demo',dst)
def logic_demo_or(m1,m2):
    dst=cv.bitwise_or(m1,m2)
    cv.imshow('logic_or',dst)
def logic_demo_not(m1,m2):
    dst=cv.bitwise_not(m1,m2)
    cv.imshow('logic_not',dst)

m1=cv.imread(r'D:\Project\Opencv\Learning01\angelababy.jpg')
m2=cv.imread(r'D:\Project\Opencv\Learning01\angelababy_gray.jpg')

logic_demo_and(m1,m2)
logic_demo_or(m1,m2)
logic_demo_not(m1,m2)
cv.waitKey(0)

3.调整亮度和对比度

import cv2 as cv
import numpy as np
'''
调整亮度和对比度
   dst=cv.addWeighted(image1,c,blank,1-c,b)#调整亮度b和对比度c 
'''
def contrast_brighness_demo(image1,c,b):#参数:图片,对比度,亮度(单位 像素)
    h,w,ch=image1.shape
    blank=np.zeros([h,w,ch],image1.dtype)
    dst=cv.addWeighted(image1,c,blank,1-c,b)#调整亮度和对比度
    cv.imshow('dst',dst)


m1=cv.imread(r'D:\Project\Opencv\Learning01\angelababy.jpg')
cv.imshow('yuantu',m1)
contrast_brighness_demo(m1,1.2,10)

cv.waitKey(0)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值