OpenCV3-Python之 像素运算

像素运算有算数运算和逻辑运算

算数运算:加、减、乘、除

应用它来调节亮度,调整对比度


逻辑运算:与、或、非

应用它来遮罩层控制

与运算:只有在非零的区域才能保留下来。

1和0等于0, 1和1等于1, 0和0等于0

黑色是零区域,白色和其他颜色是非零区域。白色可以成功地做成遮罩。

与运算,只有非零和非零的区域被保留下来。

或运算:或运算跟加运算有点相似。

1与0等于1, 1与1等于1, 0与0等于0

所有非零的区域都会有输出。

非运算:是逻辑操作按位取反

0取成1, 1取成0

非是指对一个图像来说的。

下面是像素的算数运算:

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import cv2 as cv
import numpy as np


#像素相加
def pixel_add(m1, m2):
    dst = cv.add(m1, m2)
    cv.imshow("pixel_add", dst)

#像素相减
def pixel_subtract(m1, m2):
    dst = cv.subtract(m1, m2)
    cv.imshow("pixel_subtract", dst)

#像素相除
def pixel_divide(m1, m2):
    dst = cv.divide(m1, m2)
    cv.imshow("pixel_divide", dst)

#像素相乘法
def pixel_multiply(m1, m2):
    dst = cv.multiply(m1, m2)
    cv.imshow("pixel_multiply", dst)

#需要两张一样大小的图
img1 = cv.imread("D:\exerciseResource\inpaint\synth_ear.bmp")
img2 = cv.imread("D:\exerciseResource\inpaint\\tex_face_mask.bmp")
print(img1.shape)
print(img2.shape)
cv.namedWindow("img1 window", cv.WINDOW_AUTOSIZE)

pixel_add(img1, img2)
pixel_subtract(img1, img2) #像素相减
pixel_divide(img1, img2)  #像素相除
pixel_multiply(img1, img2)#像素相乘
logic_demo(img1, img2)

cv.waitKey(0)
cv.destroyAllWindows()

运行如下:像素相加的效果图,第一张是两张原图,第二张是相加的效果图


像素的逻辑运算:

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import cv2 as cv
import numpy as np

#逻辑运算
def logic_demo(m1, m2):
    # res = cv.bitwise_and(m1, m2) #与运算
    # res = cv.bitwise_or(m1, m2)  #或运算,或运算的效果跟加法有点相似
    image = cv.imread("F:\\flower.jpg")
    res = cv.bitwise_not(image) #非运算,按位取反
    cv.imshow("pic", image)
    cv.imshow("logic_demo", res)

#调整亮度
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("contr_brightness", dst)
logic_demo(img1, img2)
image = cv.imread("F:\\flower.jpg")
cv.imshow("image2", image)
contrast_brightness_demo(image, 1.2, 15) #亮度在原来的基础上提示1.2 和10
cv.waitKey(0)

cv.destroyAllWindows()

运行结果:第一张是逻辑非的效果图,第二张是调整亮度的效果图


猜你喜欢

转载自blog.csdn.net/elegentbeauty/article/details/80141957