欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

9.基础像素运算

程序员文章站 2024-03-18 23:59:58
...

首先需要准备两张一模一样大小的图片

我装备了2张,648*859的图片

把图片信息打印出来看下,确认是否一样大小,否则没法运算

import cv2 as cv


src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
print(src1.shape)
print(src2.shape)
cv.imshow("image1", src1)
cv.imshow("image2", src2)
"""0是一致等待"""
cv.waitKey(0)

查看图片信息

(648, 859, 3)
(648, 859, 3)

图片信息,其中一张是二值图片,一个五角星

9.基础像素运算

执行像素加法

import cv2 as cv


def add_image(img1, img2):
    imgResult=cv.add(img1,img2)
    cv.imshow("image", imgResult)


src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
add_image(src1,src2)
"""0是一致等待"""
cv.waitKey(0)

得到的结果:

9.基础像素运算

运算结果是把两个图片的亮部叠加到了一起

也就是RGB像素值得相加,超出255的就截断到255,所以看到的五角星任然是白色的

下面试试减法

import cv2 as cv


def add_image(img1, img2):
    imgResult=cv.add(img1,img2)
    cv.imshow("image", imgResult)


def subtract_image(img1, img2):
    imgResult=cv.subtract(img1,img2)
    cv.imshow("image", imgResult)

src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
subtract_image(src1,src2)
"""0是一致等待"""
cv.waitKey(0)

得到的结果

9.基础像素运算

恩?好面熟,得到了一个反色的图像

其实仔细一想如果把相减的对象设置为一张白色的图片那不就得到了以前搞过得反转色了嘛

反转色就是拿255去和每个像素点做减法,白色图片每个像素点就是255

接下来是乘法:

import cv2 as cv


def add_image(img1, img2):
    imgResult=cv.add(img1,img2)
    cv.imshow("image", imgResult)


def subtract_image(img1, img2):
    imgResult=cv.subtract(img1,img2)
    cv.imshow("image", imgResult)


def multiply_image(img1, img2):
    imgResult=cv.multiply(img1,img2)
    cv.imshow("image", imgResult)


src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
multiply_image(src1,src2)
"""0是一致等待"""
cv.waitKey(0)

得到的结果

9.基础像素运算

仔细看的话图片中有几条黄线

乘法除了很色像素位置是0得到结果任然为黑色意外,其他像素相乘基本也都是只剩亮色

最后的除法

import cv2 as cv


def add_image(img1, img2):
    imgResult=cv.add(img1,img2)
    cv.imshow("image", imgResult)


def subtract_image(img1, img2):
    imgResult=cv.subtract(img1,img2)
    cv.imshow("image", imgResult)


def multiply_image(img1, img2):
    imgResult=cv.multiply(img1,img2)
    cv.imshow("image", imgResult)

def divide_image(img1, img2):
    imgResult=cv.divide(img1,img2)
    cv.imshow("image", imgResult)

src1 = cv.imread("image/Pixel/Pixel_Operation_Star.png")
src2 = cv.imread("image/bayer.png")
divide_image(src1,src2)
"""0是一致等待"""
cv.waitKey(0)

得到结果

9.基础像素运算

除法和乘法类似,只不过两者数值相除基本上也就只剩暗色图像了

以上4个就是最基本的图像运算了