Python 7.OpenCV 获取执行时间 抠图添加到另一个图、按位运算

2023-11-07

与运算:对掩膜的白色区域保留,黑色区域去除

非运算:取反运算,黑变白,白变黑

import cv2
import numpy as np
from matplotlib import pyplot as plt


img1 = cv2.imread('image/pic2.png')
img2 = cv2.imread('image/logo.png')

rows, cols, channels = img2.shape

roi = img1[0:rows, 0:cols]

img2gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)
# 获取二值化图像
ret, mask = cv2.threshold(img2gray, 200, 255, cv2.THRESH_BINARY)
# 获取二值化图像的反转图像
mask_inv = cv2.bitwise_not(mask)

e1 = cv2.getTickCount()  # 获取现在的时间

# get the argument of image
print(img1.shape)
print(img1.size)
print(img1.dtype)

e2 = cv2.getTickCount()  # 获取现在的时间
t = (e2 - e1) / cv2.getTickFrequency()  # 计算时间
print(t)

roi11 = roi.copy()  # 计算后roi会改变,必须用copy,直接赋值占用相同地址,效果不会改变
# 获取掩膜等,还没搞清
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)

img2_fg = cv2.bitwise_and(img2, img2, mask=mask_inv)

# 图片相加,在opencv中加法是饱和操作,也就是有上限值,numpy会对结果取模。
dst1 = cv2.add(img1_bg, img2_fg)
img1[0:rows, 0:cols] = dst1

# 图片按照比例混合
#dst2 = cv2.addWeighted(img1, 0.5, img2, 0.5, 0)

plt.figure(figsize=(11, 11))

b, g, r = cv2.split(img1)
img1 = cv2.merge([r, g, b])
plt.subplot(331), plt.imshow(img1), plt.title('img1')

b, g, r = cv2.split(img2)
img2 = cv2.merge([r, g, b])
plt.subplot(332), plt.imshow(img2), plt.title('img2')

plt.subplot(333), plt.imshow(img2gray, 'gray'), plt.title('img2gray')

b, g, r = cv2.split(roi11)
roi11 = cv2.merge([r, g, b])
plt.subplot(334), plt.imshow(roi11), plt.title('roi11')

plt.subplot(335), plt.imshow(mask, 'gray'), plt.title('mask')
plt.subplot(336), plt.imshow(mask_inv, 'gray'), plt.title('mask_inv')

b, g, r = cv2.split(img1_bg)
img1_bg = cv2.merge([r, g, b])
plt.subplot(337), plt.imshow(img1_bg), plt.title('img1_bg')

b, g, r = cv2.split(img2_fg)
img2_fg = cv2.merge([r, g, b])
plt.subplot(338), plt.imshow(img2_fg), plt.title('img2_fg')

b, g, r = cv2.split(dst1)
dst1 = cv2.merge([r, g, b])
plt.subplot(339), plt.imshow(dst1), plt.title('dst1')

plt.show()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 7.OpenCV 获取执行时间 抠图添加到另一个图、按位运算 的相关文章

随机推荐

  • spring知识巩固

    文章目录 前言 什么是spring Spring 特点 spring框架用到了哪些设计模式 Spring中有多少个模块 它们分别是什么 什么是AOP 谈谈你对Spring中AOP的理解 AOP应用场景 Spring AOP中名词的概念 Sp
  • 管理基础知识20

    波特五力模型 掌握 波特五力模型是迈克尔 波特 Michael Porter 于20世纪80年代初提出 他认为行业中存在着决定竞争规模和程度的五种力量 这五种力量综合起来影响着产业的吸引力以及现有企业的竞争战略决策 五种力量分别为同行业内现
  • K8S集群搭建笔记

    K8S集群搭建笔记 1 Master的创建及配置 1 1 环境准备 1 2 初始化主节点 1 2 1 修改主节点配置信息 1 2 2 初始化主节点 kubeadm init 1 2 3 配置kubectl 1 2 4 检查master配置是
  • 队列基础使用示例与通过队列实现线程通信

    目录 一 队列基础解释 二 ConcurrentLinkedDeque 并发非阻塞式队列 三 BlockingQueue 阻塞队列 ArrayBlockingQueue LinkedBlockingQueue PriorityBlockin
  • idea编译时不提示任何错误信息解决方案

    问题描述 idea中 实现某个接口不提示导包 不提示实现方法 甚至 随便输入任何信息都不报错提示 解决方法一 1 打开File gt Settings gt Build Execution Deployment gt Compiler 2
  • CGAL功能大纲

    CGAL功能大纲 Computational Geometry Algorithms Library CGAL 计算几何算法库 使用C 语言编写的 提供高效 可控的算法库 广泛应用于计算几何相关领域 如地理信息系统 计算机图形学 计算机辅助
  • sonarqube安装

    开发十年 就只剩下这套Java开发体系了 gt gt gt 1 下载 下载地址 https www sonarqube org 2 Linux安装 解压 sonarqube zip 进入sonarqube 7 1 bin linux x86
  • jpa简介

    一 JPA是什么 1 JPA简介 JPA是Java Persistence API的简称 中文名Java持久层API 是JDK 5 0注解或XML描述对象 关系表的映射关系 并将运行期的实体对象持久化到数据库中 2 JPA 提供商 Hibe
  • 求最大公约数和最小公倍数的方法

    一 求最大公约数 1 辗转相除法 最推荐 不用管a b谁大谁小 如果b大 经过一次循环 a b会交换位置 include
  • html和js的学习

    链接如下 html https www runoob com html html attributes html js https www runoob com js js tutorial html
  • Gradle系列

    gradle idea使用 Gradle的使用教程 https blog csdn net qq 22172133 article details 81513955 原文网址 https www jianshu com p 46e7a916
  • Android强大的原生调试工具adb的常用命令

    文章目录 ADB简介 常用命令 列出链接的设备 进入设备的shell环境 设备日志 安装应用程序 卸载应用程序 将本地文件复制到调试设备上 将设备上的文件拉取到本地 启动程序 强制停止程序运行 截图 屏幕录制 列出调试设备所有的应用的报名
  • 说说数据一致性有哪几种?

    分析 回答 一般来说 数据一致性模型可以分为强一致性和弱一致性 强一致性也叫做线性一致性 除此以外 所有其他的一致性都是弱一致性的特殊情况 弱一致性根据不同的业务场景 又可以分解为更细分的模型 不同一致性模型又有不同的应用场景 强一致性 当
  • ETest_Tester-装备外场试验综合测试仪

    1 产品简介 装备外场试验综合测试仪ETest Tester是用于各行业装备软件研发 测试部门或者质量管理部门外场装备测试的综合测试设备 该设备由硬件和软件两部分组成 硬件采用全封闭 无风扇铝合金结构 嵌入式X86架构主板 软件部分包括操作
  • 苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍、一遍又一遍指导记住为止。

    期待的是可以检验自己学习的成功 苦逼的是怎么又有东西没记住 但我们依然每天坚持一遍 一遍又一遍指导记住为止 原本以为大家会把讲过的都记录下来 以便日后毕业复习 事实证明18岁的我还是太年轻 一切想象的太美好 三番五次督促整理到自己笔记上 可
  • python基础—图形开发

    python基础 图形开发 python图形界面开发 认识tkinter模块 窗体的基本设置方法 几何布局管理器 pack布局管理器 grid布局管理器 place布局管理器 使用tkinter设计计算器程序 Python事件处理 常用tk
  • C++11实现的数据库连接池

    它什么是 数据库连接池负责分配 管理和释放数据库连接 它允许应用程序重复使用一个现有的数据库连接 而不是再重新建立一个 类似的还有线程池 为什么要用 一个数据库连接对象均对应一个物理数据库连接 每次操作都打开一个物理连接 使用完都关闭连接
  • markdown使用文档(Typora 快捷键)

    markdown 更简洁 更高效 强烈建议开发者认真阅读本文档 掌握md及HBuilderX对md的强大支持 窄屏幕下 可按Alt 滚轮横向滚动 很多人只把markdown用于网络文章发表 这糟蹋了markdown markdown不止是H
  • 对numpy.c_的理解

    文章目录 文档描述 关于python科学计算 pandas numpy 中axis 轴 的理解 理解 文档描述 来自官方文档的叙述 这里只简单翻译一部分 numpy c numpy c
  • Python 7.OpenCV 获取执行时间 抠图添加到另一个图、按位运算

    与运算 对掩膜的白色区域保留 黑色区域去除 非运算 取反运算 黑变白 白变黑 import cv2 import numpy as np from matplotlib import pyplot as plt img1 cv2 imrea