《python+opencv3.3视频教学 基础入门》像素运算 笔记

源码:

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)
    M2, dev2 = cv.meanStdDev(m2)
    h, w = m1.shape[:2]

    print(M1)
    print(M2)

    print(dev1)    # 方差越大,对比度越大,方差越小,对比度越小。
    print(dev2)

    img = np.zeros([h, w], np.uint8)
    m, dev = cv.meanStdDev(img)
    print(m)
    print(dev)


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


# c-对比度,b-亮度
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-------------")
src1 = cv.imread("C:/cv-samples/data/LinuxLogo.jpg")
src2 = cv.imread("C:/cv-samples/data/WindowsLogo.jpg")
print(src1.shape)
print(src2.shape)
cv.namedWindow("input image1", cv.WINDOW_AUTOSIZE)
cv.imshow("input image1", src1)
cv.imshow("input image2", src2)

src = cv.imread("C:/cvtest/0000.jpg")
cv.imshow("image", src)

contrast_brightness_demo(src, 1.2, 50)
add_demo(src1, src2)
subtract_demo(src1, src2)  # 白色全是255再减一定是一个正值所以“Linux”五颜六色,而黑色是全0再减变负,负都认为是0所以背景依然是黑色。
divide_demo(src1, src2)    # 因为相除就变成很小的数值了,所以只剩很小一点有颜色剩下的都是一片漆黑,所以除法相对来说用的少一点。
multiply_demo(src1, src2)  # 乘出来会有毛边是因为图像抗锯齿,在“Linux”的边缘的一些像素点其实并不是纯黑的,所以乘出来会有毛点。
others(src1, src2)
logic_demo(src1, src2)

dst = cv.bitwise_not(src2)
cv.imshow("not", dst)

cv.waitKey(0)


cv.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值