昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 801|回复: 0
收起左侧

如何使用OpenCV作图像或矩阵的逻辑运算

[复制链接]

239

主题

241

帖子

931

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
931
昊虹君 发表于 2022-11-30 11:57 | 显示全部楼层 |阅读模式
所谓逻辑运算,主要是指逻辑与运算、逻辑或运算、逻辑非运算、逻辑异或运算。

可用函数bitwise_and()实现图像或矩阵的逻辑与运算;
可用函数bitwise_or()实现图像或矩阵的逻辑或运算;
可用函数bitwise_not()实现图像或矩阵的逻辑非运算;
可用函数bitwise_xor()实现图像或矩阵的逻辑异或运算。

这四个函数的使用非常简单,大家看一下下面的示例代码就会用了。

值得注意的是,逻辑运算是在二进制的情况下进行的,所以大家首先要把参与运算的数转换成二进制数。

为了方便大家,以下代码中数字的二进制分别如下:
01→0000 0001
88→0101 1000

66→0100 0010
02→0000 0010

55→0011 0111

C++示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;


int main()
{

	cv::Mat A1 = (cv::Mat_<uchar>(3, 3) << 1, 1, 1,
		66, 66, 66,
		55, 55, 55);
	cout << "A1中的数据为:\n" << A1 << endl << endl;


	cv::Mat B1 = (cv::Mat_<uchar>(3, 3) << 88, 88, 88,
		2, 2, 2,
		55, 55, 55);
	cout << "B1中的数据为:\n" << B1 << endl << endl;


	cv::Mat C1, C2, C3, C4;
	bitwise_and(A1, B1, C1);
	bitwise_or(A1, B1, C2);
	bitwise_not(A1, C3);
	bitwise_xor(A1, B1, C4);

	cout << "C1中的数据为:\n" << C1 << endl << endl;
	cout << "C2中的数据为:\n" << C2 << endl << endl;
	cout << "C3中的数据为:\n" << C3 << endl << endl;
	cout << "C4中的数据为:\n" << C4 << endl << endl;

	return(0);
}

运行结果如下:


Python代码如下:
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术

# 博主微信/QQ 2487872782
# QQ群 271891601
# 欢迎技术交流与咨询

# OpenCV的版本为4.4.0

import numpy as np
import cv2 as cv

if __name__ == '__main__':
    A1 = np.array([[1, 1, 1],
                  [66, 66, 66],
                  [55, 55, 55]], dtype='uint8')

    B1 = np.array([[88, 88, 88],
                  [2, 2, 2],
                  [55, 55, 55]], dtype='uint8')

    C1 = cv.bitwise_and(A1, B1)
    C2 = cv.bitwise_or(A1, B1)
    C3 = cv.bitwise_not(A1)
    C4 = cv.bitwise_xor(A1, B1)
    

运行结果如下:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2024076726 )

GMT+8, 2024-5-17 01:30 , Processed in 0.047293 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表