OpenCv学习第四课(图像的逻辑操作与或非)

  • 逻辑运算与或非在图像处理中的概念:

    1.与操作(就是AND操作,运用函数bitwise_and(src1, src2, dst, mask)): 

(1)、参数简介:

        src1:图像矩阵1

        src2:图像矩阵2

        dst:默认选项 

        mask:默认选项

       (2)、基本操作:即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0。

   2.或操作(就是OR操作,运用函数bitwise_and(src1, src2, dst, mask)):

       (1)、参数简介:

               src1:图像矩阵1

               src2:图像矩阵2

               dst:默认选项 

               mask:默认选项

      (2)、基本操作:即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0。

   3.非操作(就是NOT操作,运用函数bitwise_and(src1, src2, dst, mask)):

       (1)、参数简介:

               src1:图像矩阵1

               src2:图像矩阵2

               dst:默认选项 

               mask:默认选项

       (2)、基本操作:即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,~1=0,~0=1。

  4.非操作(就是XOR操作,运用函数bitwise_and(src1, src2, dst, mask)):

       (1)、参数简介:

               src1:图像矩阵1

               src2:图像矩阵2

               dst:默认选项 

               mask:默认选项

       (2)、基本操作:即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,1^1=0,1^0=1,0^1=1,0^0=0得到非操作后的图片。

  • 逻辑运算与或非在图像处理中的代码演示:

# coding=utf-8

import cv2 as cv
import numpy as np
import time

print("----------python opencv------------")


def get_img_info(image):
    # print(image.shape)
    height = image.shape[0]
    weight = image.shape[1]
    channels = image.shape[2]
    # print(image.shape[0])
    # print(image.shape[1])
    # print(image.shape[2])
    for row in range(height):
        for col in range(weight):
            for c in range(channels):
                pv = image[row, col, c]
                image[row, col, c] = 255 - pv
    cv.imshow("image px", image)


# 更高效的完成
def get_image_info(image1, image2):
    dst1 = cv.bitwise_or(image1, image2)
    dst2 = cv.bitwise_and(image1, image2)
    dst3 = cv.bitwise_xor(image1, image2)
    dst4 = cv.add(image1, image2)
    dst5 = cv.subtract(image1, image2)
    dst6 = cv.multiply(image1, image2)
    dst7 = cv.divide(image1, image2)
    dst8 = cv.bitwise_not(image1)
    cv.imshow("xiaofeng", dst1)


if __name__ == '__main__':
    src1 = cv.imread("D:/doubanimgs/full/75eb7ea57d32abfefec8af7438a9ea3b751a7656.jpg")
    src2 = cv.imread("D:/doubanimgs/full/77a457e305ebe2ad833a985c8b7c6cd590b7ac98.jpg")
    cv.namedWindow("image px", cv.WINDOW_AUTOSIZE)
    cv.imshow("image px", src1)
    cv.imshow("image px1", src2)

    start_time = time.time()
    # get_img_info(src)
    get_image_info(src1, src2)
    stop_time = time.time()

    print("------->>use time<<------- %f" %(stop_time - start_time))
    cv.waitKey(0)
    cv.destroyAllWindows()
  • 逻辑运算与或非在图像处理中的结果演示:

      (1)、与操作:

      (2)、或操作:

 

       (3)、非操作:

      (4)、异或操作:   

 

      (5)、减操作:

      (6)、加操作:

     (7)、乘操作:

     (8)、除操作:

(图片来源于豆瓣摄影,如有涉及隐私,请及时告知,以便于及时删除,谢谢!!!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值