OpenCV的像素运算

本文通过Python和OpenCV库详细介绍了图像处理中的基本数学运算,包括像素相加、相减、相乘、相除,以及如何通过计算图像的均值和方差来判断图像中有用信息的存在。此外,还展示了如何进行逻辑运算,并调整图像的亮度和对比度。

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

本文代码使用python实现

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)


# 其他操作
def others(m1, m2):
    M1, dev1 = cv.meanStdDev(m1) # M1均值,dev1方差
    M2, dev2 = cv.meanStdDev(m2) # M2均值,dev2方差
    h, w = m1.shape[:2]
    print(M1)                    # 打印均值M1
    print(M2)                    # 打印均值M2
    print(dev1)                  # 打印方差
    print(dev2)                  # 打印方差
    img = np.zeros([h, w], np.uint8)    # 产生一个所有像素都为0的图片
    m, dev = cv.meanStdDev(img)   # 获取该图片的均值和方差
    print(m)                      # 打印均值:[[0.]]
    print(dev)                    # 打印方差:[[0.]]
# 说明:可通过均值和方差判断图片中是否有有用信息


src1 = cv.imread("C:/Users/admin/Desktop/1.jpg")  # 打开一张图片
src2 = cv.imread("C:/Users/admin/Desktop/2.jpg")  # 打开一张图片
print(src1.shape)
print(src2.shape)
cv.namedWindow("input image1", cv.WINDOW_AUTOSIZE)  # 设置图片尺寸,自动
cv.imshow("input image1", src1)  # 显示图像
cv.namedWindow("input image2", cv.WINDOW_AUTOSIZE)  # 设置图片尺寸,自动
cv.imshow("input image2", src2)  # 显示图像
add_demo(src1, src2)
subtract_demo(src1, src2)
divide_demo(src1, src2)
multiply_demo(src1, src2)
others(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()

效果如下,注意每张图片的标题

像素的逻辑运算

def logic_demo(m1, m2):
    dst = cv.bitwise_and(m1, m2)    # 逻辑运算,与
    cv.imshow("logic_demo_and", dst)
    dst = cv.bitwise_or(m1, m2)  # 逻辑运算,或
    cv.imshow("logic_demo_or", dst)
    dst = cv.bitwise_not(m1, m2)  # 逻辑运算,非
    cv.imshow("logic_demo_not", dst)
    dst = cv.bitwise_xor(m1, m2)  # 逻辑运算,异或
    cv.imshow("logic_demo_xor", dst)

亮度和对比度的调节

def contrast_brightness(image, c, b):
    h, w, ch = image.shape[:3]
    blank = np.zeros([h, w, ch], image.dtype)   # 新建一个全为0的图像,尺寸和通道与image相同
    dst = cv.addWeighted(image, c, blank, 1-c, b) # image图像1,c对比对,blank图像2,1-c对比度,b亮度
    cv.imshow("con-bri-demo", dst)  # 显示图像

contrast_brightness(src1, 1.5, 0)

效果如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑟寒凌风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值