OpenCV:像素运算

1. 读取两张大小相同的图片,才能进行像素运算,下载了OpenCV3之后就会在opencv目录中的sources/samples/data/中找到官方自带的图片。在这里我们就选择LinuxLogo.jpg与WindowsLogo.jpg进行相关的运算操作。
首先读取图片
import cv2 as cv

src1 = cv.imread("./images/WindowsLogo.jpg")
src2 = cv.imread("./images/LinuxLogo.jpg")
# 展示两张图片
cv.imshow("Windows logo", src1)
cv.imshow("Linux logo", src2)
cv.waitKey(0)
cv.destoryAllWindows()
运行之后的效果如下:

在这里插入图片描述

查看两张图片的大小:
print(src1.shape)
print(src2.shape)
运行结果如下:

在这里插入图片描述

2. 调用cv2.add()函数对两张图片进行叠加,如果两张图片相加之后,像素大于255,就截断为255。示例代码如下:
import cv2 as cv


print("-------------2020/4/21 像素运算操作")
src1 = cv.imread("./images/WindowsLogo.jpg")
src2 = cv.imread("./images/LinuxLogo.jpg")

def add_image_demo(image1, image2):
	dst = cv.add(image1, image1)
	cv.imshow("dst logo", dst)
	
add_image_demo(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()
运行程序之后的效果如下:

在这里插入图片描述

3.调用cv.subtract()函数对两张图片进行相减操作(src2-src1),示例代码如下:
如果两张图片相减之后的像素值为负值,就截断为0,即为黑色。
import cv2 as cv


print("-------------2020/4/21 像素运算操作")
src1 = cv.imread("./images/WindowsLogo.jpg")
src2 = cv.imread("./images/LinuxLogo.jpg")

# 对图片进行相减操作
def subtract_image_demo(image1, image2):
    sub_dst = cv.subtract(image1, image2)
    cv.imshow("subtract image", sub_dst)

subtract_image_demo(src1,src2)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

4.如果src1-src2的话效果如下:

在这里插入图片描述

5. 对图片做相除操作,示例代码如下:
import cv2 as cv

src1 = cv.imread("./images/WindowsLogo.jpg")
src2 = cv.imread("./images/LinuxLogo.jpg")
# 对图片进行相除操作
def divide_image_demo(image1, image2):
    divide_dst = cv.divide(image1, image2)
    cv.imshow("divide image", divide_dst)


divide_image_demo(src2, src1)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

6. 调用cv.multiply()函数对图片进行像素进行相乘操作,示例代码如下:
import cv2 as cv


print("-------------2020/4/21 像素运算操作")
src1 = cv.imread("./images/WindowsLogo.jpg")
src2 = cv.imread("./images/LinuxLogo.jpg")

# 对图片做相乘操作
def multiply_image_demo(image1, image2):
    divide_dst = cv.multiply(image1, image2)
    cv.imshow("divide image", divide_dst)


multiply_image_demo(src2, src1)
cv.waitKey(0)
cv.destroyAllWindows()

在这里插入图片描述

7. 求均值函数cv2.mean(),求方差函数cv2.meanStdDev()
import cv2 as cv


print("-------------2020/4/21 像素运算操作")
src1 = cv.imread("./images/WindowsLogo.jpg")
src2 = cv.imread("./images/LinuxLogo.jpg")


def others_demo(image1, image2):
    m1 = cv.mean(image1)
    m2 = cv.mean(image2)
    # m1 = cv.meanStdDev(image1)
    # m2 = cv.meanStdDev(image2)

    print("M1: %s,M2: %s"%(m1,m2))


others_demo(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()
发布了206 篇原创文章 · 获赞 36 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zjy123078_zjy/article/details/105649703