当前位置:网站首页>二:OpenCV图片叠加逻辑运算
二:OpenCV图片叠加逻辑运算
2022-08-05 11:55:00 【fplei】
通过图片叠加逻辑运算可以实现多种效果,如模版截取感兴趣区域,图片融合,色彩交叉等,本文涉及4个图片矩阵叠加逻辑运算函数,如下:
1.bitwise_and
2.bitwise_or
3.bitwise_not
4.bitwise_xor
1.函数bitwise_and
定义:
void bitwise_and(InputArray src1, InputArray src2,OutputArray dst, InputArray mask = noArray());
def bitwise_and(src1, src2, dst=None, mask=None)
参数:
src1:输入图像或矩阵1
src2:输入图像或矩阵2
dst:输出图像
mask:掩码,通常采用默认值
作用:将两幅图像进行与运算。
使用案例
#python code:
import cv2
image_mat1=cv2.imread(image1path)
image_mat1=cv2.threshold(image_mat1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
image_mat2=cv2.imread(image2path)
image_mat2=cv2.threshold(image_mat2, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
res = cv2.bitwise_and(image_mat1, image_mat2)
plt.figure("bitwise_and")
plt.title("bitwise_and")
plt.imshow(res)
plt.show()
#C code:
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src1 = imread("xxx/x1.jpg", 1);
Mat src2 = imread("xxx/x2.jpg", 1);
Mat andMat;
bitwise_and(src1, src2, andMat);
namedWindow("andMat", 0);
imshow("andMat", andMat);
waitKey(0);
return 0;
}
效果如下
2.函数bitwise_or
定义:
void bitwise_or(InputArray src1, InputArray src2,OutputArray dst, InputArray mask = noArray());
def bitwise_or(src1, src2, dst=None, mask=None)
参数:
src1:输入图像或矩阵1
src2:输入图像或矩阵2
dst:输出图像
mask:掩码,通常采用默认值
作用:将两幅图像进行或运算。
使用案例
#python code:
import cv2
image_mat1=cv2.imread(image1path)
image_mat1=cv2.threshold(image_mat1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
image_mat2=cv2.imread(image2path)
image_mat2=cv2.threshold(image_mat2, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
res = cv2.bitwise_or(image_mat1, image_mat2)
plt.figure("res_bitwise_or")
plt.title("res_bitwise_or")
plt.imshow(res)
plt.show()
#C code
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src1 = imread("e:/TestImage/4.png", 1);
Mat src2 = imread("e:/TestImage/6.png", 1);
Mat orMat;
bitwise_or(src1, src2, orMat);
namedWindow("orMat", 0);
imshow("orMat", orMat);
waitKey(0);
return 0;
}
效果如下:
3.函数bitwise_not
定义:
void bitwise_not(InputArray src, OutputArray dst,InputArray mask = noArray());
def bitwise_not(src, dst=None, mask=None)
参数:
src:输入图像或矩阵1
dst:输出图像
mask:掩码,通常采用默认值
作用:将两幅图像进行非运算。
使用案例
#python code:
import cv2
image_mat1=cv2.imread(image1path)
image_mat1=cv2.threshold(image_mat1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
image_mat2=cv2.imread(image2path)
image_mat2=cv2.threshold(image_mat2, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
res = cv2.bitwise_not(image_mat1, image_mat2)
plt.figure("bitwise_not")
plt.title("bitwise_not")
plt.imshow(res)
plt.show()
#C code
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src = imread("xxx/4.jpg", 1);
Mat notMat;
bitwise_not(src, notMat);
namedWindow("notMat", 0);
imshow("notMat", notMat);
waitKey(0);
return 0;
}
效果如下
4.函数bitwise_xor
定义:
void bitwise_xor(InputArray src1, InputArray src2,OutputArray dst, InputArray mask = noArray());
def bitwise_xor(src1, src2, dst=None, mask=None)
参数说明:
src1:输入图像或矩阵1
src2:输入图像或矩阵2
dst:输出图像
mask:掩码,通常采用默认值
作用:将两幅图像进行异或运算。
使用案例:
#python code:
import cv2
image_mat1=cv2.imread(image1path)
image_mat1=cv2.threshold(image_mat1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
image_mat2=cv2.imread(image2path)
image_mat2=cv2.threshold(image_mat2, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
res = cv2.bitwise_xor(image_mat1, image_mat2)
plt.figure("bitwise_xor")
plt.title("bitwise_xor")
plt.imshow(res)
plt.show()
#C code
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
Mat src1 = imread("xxx/1.jpg", 1);
Mat src2 = imread("xxx/2.jpg", 1);
Mat xorMat;
bitwise_xor(src1, src2, xorMat);
namedWindow("xorMat", 0);
imshow("xorMat", xorMat);
waitKey(0);
return 0;
}
效果如下

文章来源>>【二:OpenCV图片叠加逻辑运算详细说明】更多使用方法本站将持续更新,欢迎Star
边栏推荐
- 2022.08.01_每日一题
- 60行从零开始自己动手写FutureTask是什么体验?
- 今日开幕:LiveVideoStackCon 2022 音视频技术大会 上海站
- WPF开发随笔收录-WriteableBitmap绘制高性能曲线图
- 尚硅谷-JVM-内存和垃圾回收篇(P1~P203)
- 该不该将单体架构迁移到微服务?
- 790. 数的三次方根
- The principle and application scenario of mysql master-slave synchronization
- 平安萌娃卡保险怎么样?让父母读懂几个识别产品的方法
- 【HMS core】【FAQ】Health Kit, Ads kit, Push Kit Typical Questions Collection 5
猜你喜欢

详细剖析 Redis 三种集群策略

【Untitled】

小红的aba子序列(离散化、二分、dp维护区间最短)

KVM virtualization technology-NUMA technology and application

碘乙酰胺在Desthiobiotin-Iodoacetamide试剂中的作用?

莅临GOPS大会龙智展位,获取Forrester最新报告:《Forrester Wave:2021年第四季度企业服务管理报告》

高泽龙出席博鳌全球旅游生态大会 讲元宇宙与未来网络科技

Exploration and practice of transaction link under multi-service mode

LeetCode刷题(8)

【硬件架构的艺术】学习笔记(2)同步和复位
随机推荐
尚硅谷-JVM-内存和垃圾回收篇(P1~P203)
2022.08.03_每日一题
查询优化(TTFB过长)left join索引未生效
STM32H743IIT6学习笔记02——USART
食品饮料行业B2B商城系统:加速行业数字化转型,提升B2B平台交易效率
Apache APISIX Ingress v1.5-rc1 released
2022 CCF International AIOps Challenge Finals and AIOps Seminar Registration Open
Shang Silicon Valley-JUC
hdu1455 Sticks(搜索+剪枝+剪枝+.....+剪枝)
今日开幕:LiveVideoStackCon 2022 音视频技术大会 上海站
Three.js 点击模型,高亮发光模型外轮廓
todolist案列——原生js
LeetCode刷题(8)
Face the summary - club resort - 6 years
How about Ping An Mengwa Card Insurance?Let parents read a few ways to identify products
自从用了 Kiali 以后才知道,配置 Istio 的 流量管理 是如此容易
I've only known since Kiali that configuring Istio's traffic management is so easy
798. 差分矩阵
2022.08.01_每日一题
深度学习(四)分析问题与调参 理论部分