所谓逻辑运算,主要是指逻辑与运算、逻辑或运算、逻辑非运算、逻辑异或运算。
可用函数bitwise_and()实现图像或矩阵的逻辑与运算;
可用函数bitwise_or()实现图像或矩阵的逻辑或运算;
可用函数bitwise_not()实现图像或矩阵的逻辑非运算;
可用函数bitwise_xor()实现图像或矩阵的逻辑异或运算。
这四个函数的使用非常简单,大家看一下下面的示例代码就会用了。
值得注意的是,逻辑运算是在二进制的情况下进行的,所以大家首先要把参与运算的数转换成二进制数。
为了方便大家,以下代码中数字的二进制分别如下:
01→0000 0001
88→0101 1000
66→0100 0010
02→0000 0010
55→0011 0111
C++示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术//OpenCV版本 OpenCV3.0#include
#include using namespace std;
using namespace cv;int main()
{cv::Mat A1 = (cv::Mat_(3, 3) << 1, 1, 1,66, 66, 66,55, 55, 55);cout << "A1中的数据为:\n" << A1 << endl << endl;cv::Mat B1 = (cv::Mat_(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代码如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 出处:昊虹AI笔记网(hhai.cc)
# 用心记录计算机视觉和AI技术
# OpenCV的版本为4.4.0import numpy as np
import cv2 as cvif __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)
运行结果如下:
下一篇: 岁月静好,花开不败的散文