210_Python+OpenCV_011—像素加减乘除/and or not/亮度对比度调整

本文详细介绍了像素级图像运算的基本概念,包括加减乘除等算数运算、逻辑运算及图像亮度对比度调整,通过Python代码示例展示了不同运算的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.像素运算

运算图像的大小和类型一定要一样才可以

2.算数运算

加减乘除
在这里插入图片描述在这里插入图片描述

2.1 加法运算

在这里插入图片描述
解释结果
黑色是0,0加上任意值都为0,所以黑色的不会影响
白色是255,由于uint8一个字节的限制,最大值为255,255加上任意值,最后都是255,显示白色

# -*- coding:utf-8 -*-
# Linda Li 2019/8/15 16:54 cv_14_像素运算 PyCharm
import cv2 as cv
import numpy as np


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 divide_demo(m1, m2):
    """除法,一般用的比较少,两个数相除,特别小的话容易一片漆黑"""
    dst = cv.divide(m1, m2)
    cv.imshow("divide_demo", dst)


def multiply_demo(m1, m2):
    """乘法"""
    dst = cv.multiply(m1, m2)
    cv.imshow("multiply_demo", dst)


print("------hello python")
src1 = cv.imread("../cv_02/cv_141.jpg")
src2 = cv.imread("../cv_02/cv_142.jpg")

# 运算图像的大小和类型一定要一样才可以
print(src1.shape)
print(src1.shape)

# 分别打印输出
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)
cv.imshow("image1", src1)
cv.imshow("image2", src2)


# add_demo(src1, src2)
# subtract_demo(src1, src2)
# divide_demo(src1, src2)
multiply_demo(src1, src2)


cv.waitKey(0)
cv.destroyAllWindows()

减法运算

在这里插入图片描述

2.3 除法运算

在这里插入图片描述
除法,一般用的比较少,两个数相除,商特别小的话容易一片漆黑

2.4 乘法运算

在这里插入图片描述
其实放大看,图一的Linux的附近是有模糊的,也就是介于0-255之间的值,所以会导致乘机在0-255之间是模糊的,黑白解释参见加法

3.逻辑运算

or and not
遮罩层

3.1与and

都为真TRUE才是真,有一个假FALSE就是假
黑色的地方都是0,并集之后依旧是0,
白色的地方是1,并集之后image2的不变
在这里插入图片描述

def logic_demo(m1, m2):
    dst = cv.bitwise_and(m1, m2)
    cv.imshow("logic_demo", dst)

3.2 or

在这里插入图片描述
有一个真就是真,回两个图像里真的部分都保留下来

def logic_demo(m1, m2):
    dst = cv.bitwise_and(m1, m2)
    cv.imshow("logic_demo", dst)

3.3 not 非

按位取反
高字节的都会变成0,0会变成1
111000——>000111
在这里插入图片描述

4.调整亮度和对比度

# -*- coding:utf-8 -*-
# Linda Li 2019/8/16 8:03 cv_14_像素运算 PyCharm
import cv2 as cv
import numpy as np


def contrast_brightness_demo(image, c, b):
    """c_对比度和b_亮度
    这个是粗略的调整,ps软件是会精准的调整是先计算均值,然后每个遍历每个像素点减去均值,之后乘以倍数"""

    # shape()返回值是(646, 1024, 3)高,宽,通道数channel
    h, w, ch = image.shape

    # 要建立一个blank空白图像黑色的图像和image的大小和类型都一样
    blank = np.zeros([h, w, ch], image.dtype)

    # 只要是函数里none的参数,python都可以在前面接收
    dst = cv.addWeighted(image, c, blank, 1-c, b)
    cv.imshow("con-bri-demo", dst)


print("------hello python------")

src = cv.imread("../cv_02/cv_181.jpg")
cv.imshow("input image", src)

# 对比度1.2,亮度10
contrast_brightness_demo(src, 1.2, 10)

# 对比度1.5,亮度10
contrast_brightness_demo(src, 1.5, 10)

# 对比度1.5,亮度50
contrast_brightness_demo(src, 1.5, 50)

cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值