Python3+OpenCV3+Pycharm编程:像素计算

实验图片地址:\opencv\sources\samples\data

算术计算:调节亮度、对比度

逻辑运算:遮罩层控制

调节亮度、对比度

代码

# -*- coding: utf-8 -*-
# By:iloveluoluo
# 2019.3.23
import cv2 as cv
import numpy as np

# 算术运算,调节亮度、对比度
# 逻辑运算,遮罩层控制
# src:source
# dst:destination


def get_image_info(image):
    """属性读取"""
    # print(image.shape)  # (高,宽,通道数)
    height = image.shape[0]
    width = image.shape[1]
    channels = image.shape[2]  # Blue, Green, Red
    print("height:%s, width:%s, channels:%s, pixels:%s" % (height, width, channels, image.size))


def add_demo(image_a, image_b):
    """图像相加"""
    add = cv.add(image_a, image_b)
    cv.imshow("addition", add)


def sub_demo(image_a, image_b):
    """图像相减"""
    sub = cv.subtract(image_a, image_b)
    cv.imshow("subtraction", sub)


def mul_demo(image_a, image_b):
    """图像相乘"""
    div = cv.multiply(image_a, image_b)
    cv.imshow("multiplication", div)


def div_demo(image_a, image_b):
    """图像相除"""
    div = cv.divide(image_a, image_b)
    cv.imshow("division", div)


def logic_demo(image_a, image_b):
    """逻辑运算"""
    dst1 = cv.bitwise_and(image_a, image_b)
    dst2 = cv.bitwise_or(image_a, image_b)
    dst3 = cv.bitwise_xor(image_a, image_b)
    dst4 = cv.bitwise_not(image_a)  # 像素取反
    cv.imshow("and", dst1)
    cv.imshow("or", dst2)
    cv.imshow("xor", dst3)
    cv.imshow("not", dst4)


def contrast_brightness_demo(image, c, b):
    """
    改变对比度、亮度
    c:contrast 对比度 1不变
    b:brightness 亮度 0不增加
    """
    cv.imshow("contrast brightness src", image)
    h, w, ch = image.shape
    blank = np.zeros([h, w, ch], image.dtype)
    dst = cv.addWeighted(image, c, blank, 1-c, b,)
    cv.imshow("contrast brightness dst", dst)


def others_demo(image_a, image_b):
    """各通道灰度平均值,方差(对比度)"""
    # mean1 = cv.mean(image_a)
    # mean2 = cv.mean(image_b)
    mean1, dev1 = cv.meanStdDev(image_a)
    mean2, dev2 = cv.meanStdDev(image_b)
    print("mean1:\n%s, \n dev1:\n%s" % (mean1, dev1))
    print("mean2:\n%s, \n dev2:\n%s" % (mean2, dev2))


src1 = cv.imread('E:/MyFile/Picture/date/LinuxLogo.jpg')  # 读取图片
src2 = cv.imread('E:/MyFile/Picture/date/WindowsLogo.jpg')  # 读取图片
get_image_info(src1)
get_image_info(src2)
cv.imshow("image1", src1)
cv.imshow("image2", src2)

# 算术运算
"""
add_demo(src1, src2)
sub_demo(src1, src2)
mul_demo(src1, src2)
div_demo(src1, src2)
others_demo(src1, src2)
"""

# 逻辑运算
"""
logic_demo(src1, src2)
"""

# 对比度、亮度
src = cv.imread('E:/MyFile/Picture/date/lenademo.png')
contrast_brightness_demo(src, 1.2, 10)  # 对比度为1.2倍,亮度增加10

cv.waitKey(0)
cv.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值