opencv-python(十一)

 图像加法

import numpy as np
import cv2
img = cv2.imread('jk.jpg')
res = cv2.add(img, img)
cv2.imshow('Mypicture1',img)
cv2.imshow('MyPicture2',res)cv2.waitKey(0)
cv2.destroyAllWindows()

res = cv2.add(src1, src2, dst=None, mask=None, dtype=None)

src1:第一幅图像

src2:第二幅图像

mask:图像掩膜

dtype:图像数据类型

2幅图像必须相同大小才可以相加。图像加法就是图像的像素值相加,如果a+b > 255,则c=255。最大的特色是图像会变得更亮。

import cv2
import numpy as npimg = cv2.imread('jk.jpg')
res1 = cv2.add(img,img)
res2 = img + img
cv2.imshow('MyPicture1',img)
cv2.imshow('MyPicture2',res1)
cv2.imshow('Mypicture3', res2)cv2.waitKey(0)
cv2.destroyAllWindows()

使用数学符号(+)执行图象加法。

c= a+b   # 如果a+b<=255

c = mod((a+b), 256)     #如果a+b>255,相当于取256的余数

掩膜

import cv2
import numpy as npimg1 = np.ones((4,5), dtype=np.uint8)*8
img2 = np.ones((4,5), dtype=np.uint8)*9
mask = np.zeros((4,5), dtype=np.uint8)
mask[1:3,1:4] = 255
dst = np.random.randint(0,256,(4,5), np.uint8)
print('img1=\n',img1)
print('img2=\n',img2)
print('mask=\n',mask)
print('最初值 dst=\n',dst)
dst = cv2.add(img1,img2,mask=mask)
print('结果值 dst=\n',dst)

重复曝光技术

图像加权和

dst = saturate(src1 X alpha + src2 X beta + gamma)

src1和src2必须是大小相同的图像

dst = addWeighted(src1, alpha, src2, beta, gamma)

import cv2
import numpy as npsrc1 = np.ones((2,3), dtype=np.uint8)*10
src2 = np.ones((2,3), dtype=np.uint8)*50
alpha = 1
beta = 0.5
gamma = 5
print(f'src1=\n{src1}')
print(f'src2=\n{src2}')
dst = cv2.addWeighted(src1,alpha,src2,beta,gamma)
print(f'dst=\n{dst}')

图像的位运算

cv2.bitwise_and():相当于逻辑的and运算

cv2.bitwise_or():相当于逻辑的or运算

cv2.bitwise_not():相当于逻辑的not运算

cv2.bitwise_xor():相当于逻辑的xor运算

dis = cv2.bitwise_and(src1, src2, mask=None)

import cv2
import numpy as np
src1 = np.random.randint(0,255,(3,5),dtype=np.uint8)
src2 = np.zeros((3,5),dtype=np.uint8)
src2[0:2,0:2] = 255
dst = cv2.bitwise_and(src1,src2)
print(f'src1=\n{src1}')
print(f'src2=\n{src2}')
print(f'dst=\n{dst}')

import cv2
import numpy as npsrc1 =cv2.imread('jk.jpg')
src2 = np.zeros(src1.shape, dtype = np.uint8)
src2[30:260,70:260,:] = 255  #  这是三维数组
dst = cv2.bitwise_and(src1,src2)
cv2.imshow('Hung',src1)
cv2.imshow('Mask',src2)
cv2.imshow('Result',dst)cv2.waitKey(0)
cv2.destroyAllWindows()

dst = cv2.bitwise_or(src1, src2, mask=None)

import cv2
import numpy as npsrc1 = cv2.imread('jk.jpg')
src2 = np.zeros(src1.shape,dtype=np.uint8)src2[30:260,70:260,:] = 255
dst = cv2.bitwise_or(src1,src2)
cv2.imshow('Hung',src1)
cv2.imshow('mask',src2)
cv2.imshow('Result',dst)cv2.waitKey(0)
cv2.destroyAllWindows()

dst = cv2.bitwise_not(src, mask=None)

import cv2
import numpy as npsrc = cv2.imread('forest.jpg')
dst = cv2.bitwise_not(src)
cv2.imshow('Forest',src)
cv2.imshow('Result',dst)cv2.waitKey(0)
cv2.destroyAllWindows()

dst = cv2.bitwise_xor(src1,src2,mask=None)

只要不相同则返回1.

任意像素与白色像素值(11111111)执行xor运算时,结果是not运算的结果。

人以像素于黑色像素值(00000000)执行xor运算时,结果是原像素值。

import cv2
import numpy as npsrc1 = cv2.imread('forest.jpg')
src2 = np.zeros(src1.shape, dtype=np.uint8)
src2[:,120:360,:] = 255
dst = cv2.bitwise_xor(src1,src2)
cv2.imshow('Forest',src1)
cv2.imshow('Mask',src2)
cv2.imshow('Forest xor operation', dst)cv2.waitKey(0)
cv2.destroyAllWindows()

图像加密与解密

若C = A xor B

则A = B xor C

 将淹没图像B当作一个密钥图像,A于B的xor运算就可以为A图像加密,要解密就让密钥图像与C执行xor运算。

import cv2
import numpy as npsrc = cv2.imread("forest.jpg")
key = np.random.randint(0,255,src.shape,dtype=np.uint8)
print(src.shape)
cv2.imshow('forest',src)
cv2.imshow('key',key)img_encry = cv2.bitwise_xor(src,key)
img_decry = cv2.bitwise_xor(img_encry,key)
cv2.imshow('encrytion', img_encry)
cv2.imshow('decrytion',img_decry)cv2.waitKey(0)
cv2.destroyAllWindows()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作为一名程序员,怎么才能写出简洁实用还漂亮的代码楼呢?这25个超惊艳的Python代码写法,你一定要学会!

前言 Python可以用于复杂的数据分析和Web开发项目&#xff0c;还能以极少的代码行数完成令人惊叹的任务。本文将分享25个简短的Python代码示例&#xff0c;用来展示Python编程语言的魅力和效率。 1.列表推导式 Python的列表推导式提供了一种优雅的方法来创建列表。 # 将一个…

以太坊==MetaMask获取测试币最新网址

估算分数https://community.infura.io/t/unable-to-receive-sepolia-eth-from-faucet/7715 Gitcoin Passport 水龙头地址&#xff0c;填入自己的测试地址 水龙头项目地址 GitHub - pk910/PoWFaucet: Modularized faucet for EVM chains with different protection methods (…

2023年JCR影响因子正式发布,点击查看能源与燃料领域期刊变化【持续更新02】

2024年6月20日&#xff0c;科睿唯安发布了2024年度《期刊引证报告》(Journal Citation Reports&#xff0c;JCR)&#xff0c;报告覆盖全面的高质量期刊资源&#xff0c;提供了丰富的数据、指标和分析。今年JCR的最大变化为&#xff1a;把属于不同数据库&#xff0c;但属于同一学…

储能电池竞争出海分析

锂电池的激烈竞争进一步蔓延到储能行业。为保市场份额和现金流稳定&#xff0c;不少储能电池企业都开始大幅度降低报价只求中标储能项目。 随着6月的储能电芯的最高限价和系统报价都已经贴近成本价&#xff0c;一二三线的储能电池厂商将要如何应对&#xff1f; 1、储能规模快速…

Centos Stream9 和Centos Stream10的下载网址

Index of /https://mirror.stream.centos.org/

“迷你剧场新体验:探索短剧小程序系统的魅力!“

在移动互联网的时代背景下&#xff0c;短视频和短剧已经成为人们娱乐消费的新宠。短剧小程序系统&#xff0c;以其独特的互动形式、便捷的观看体验和丰富的内容生态&#xff0c;为迷你剧场带来了全新的体验。接下来将探讨这个系统的魅力所在&#xff0c;以及它如何改变着人们的…

二维码美化,修改二维码颜色样式,添加logo,文字描述

在如今的社会&#xff0c;二维码已成为我们日常生活中不可或缺的一部分&#xff0c;无论是支付、访问网站、社交媒体互动&#xff0c;还是分享信息&#xff0c;二维码都扮演着重要角色。然而&#xff0c;标准的黑白二维码有时可能显得过于单调&#xff0c;缺乏吸引力。为了提升…

EasyRecovery数据恢复软件2024免费版下载

EasyRecovery数据恢复软件&#xff0c;是我在电脑使用过程中遇到的神器&#xff01;它不仅功能强大&#xff0c;操作简便&#xff0c;还帮我找回了丢失的重要文件。今天&#xff0c;我就来给大家分享一下我的使用体验和心得。 让我来介绍一下EasyRecovery的功能。这款软件可以恢…

你只是重新发现了一些东西

指北君关于另外一条思维路径的发现。 "自以为是"的顿悟时刻 有很多时候&#xff0c;我会"自以为是"的发现/发明一些东西。这种"自以为是"的时刻通常还带有一些骄傲自豪的情绪。这种感觉特别像古希腊博学家阿基米德 在苦思冥想如何测量不规则物体…

数据库管理-第210期 HaloDB-Oracle兼容性测试02(20240622)

数据库管理209期 2024-06-22 数据库管理-第210期 HaloDB-Oracle兼容性测试02&#xff08;20240622&#xff09;1 表增加列2 约束3 自增列4 虚拟列5 表注释6 truncat表总结 数据库管理-第210期 HaloDB-Oracle兼容性测试02&#xff08;20240622&#xff09; 作者&#xff1a;胖头…

一种简单的图像分析

简介 一种简单的边界分析&#xff0c;通过相邻的像素的灰度进行判断&#xff0c;计算出边界。 测试1 原图 结果 测试2 原图 结果 代码说明 主要的技术在makeTable过程中&#xff0c;这个过程主要执行了以下几步 计算每个像素的灰度计算相邻多个像素的最大灰度差统计灰度差…

每日一题——冒泡排序

C语言——冒泡排序 冒泡排序练习 前言&#xff1a;CSDN的小伙伴们&#xff0c;大家好&#xff01;今天我来给大家分享一种解题思想——冒泡排序。 冒泡排序 冒泡法的核心思想&#xff1a;两两相邻的元素进行比较 2.冒泡排序的算法描述如下。 (1)比较相邻的元素。如果第一 个比…

展讯-源码编译

1.硬件要求 编译主机要求&#xff0c;注意尽量不要使用虚拟机 CPU&#xff1a;Intel(R) Core(TM) i7-4790 CPU 3.60 GHz 内存&#xff1a;8G 硬盘&#xff1a;500G SSD Ubuntu 版本&#xff1a;Ubuntu 64-bit 14.04.5 LTS 这是最低版本要求&#xff0c;实际性能越高越好 2…

【机器学习 复习】 第1章 概述

一、概念 1.机器学习是一种通过先验信息来提升模型能力的方式。 即从数据中产生“模型”( model )的算法&#xff0c;然后对新的数据集进行预测。 2.数据集&#xff08;Dataset&#xff09;&#xff1a;所有数据的集合称为数据集。 训练集&#xff1a;用来训练出一个适合模…

wpfui:一个开源免费具有现代化设计趋势的WPF控件库

wpfui介绍 wpfui是一款开源免费&#xff08;MIT协议&#xff09;具有现代化设计趋势的WPF界面库。wpfui为wpf的界面开发提供了流畅的体验&#xff0c;提供了一个简单的方法&#xff0c;让使用WPF编写的应用程序跟上现代设计趋势。截止写这篇文章&#xff0c;该项目获得了6.7k …

YYU-5/80-260mm型钢筋残余变形测试仪 电子引伸计

YYU-5/80-260mm型钢筋接头专用引伸计&#xff0c;是按照《JGJ 107 2010 钢筋技术连接技术规程》的技术要求设计的&#xff0c;专门用于测试钢筋接头残余变形的双向平均引伸计&#xff0c;其标距可以根据钢筋直径要求进行调整。 完全符合《JGJ 107 2010 钢筋技术连接技术规程》…

信创适配评测

概叙 信创科普参考&#xff1a;全面国产化之路-信创-CSDN博客 有必要再解释一下两个名词“28N”&#xff0c;“79号文件”&#xff0c;因为“28N”指定了由政府牵头从各领域开启国产化的基调&#xff0c;而“79号文件”则指定了国产化的截止日期2027年。 信创的本质是实现中国信…

EOS black灵魂回响黑色无法联机/联机报错/联机失败怎么办

灵魂回响黑色EOS black中的职业系统&#xff0c;自由度非常高。从人物属性的精细调整&#xff0c;到装备属性的独特搭配&#xff0c;再到技能的个性化组合&#xff0c;每一步都充满了无限可能。更为惊喜的是&#xff0c;游戏中的角色职业不是一成不变的&#xff0c;而是随着手中…

Springboot3.3 整合Cassandra 4.1.5

一、数据库搭建 -- 创建Keyspace CREATE KEYSPACE school WITH replication {class:SimpleStrategy, replication_factor : 1};-- 创建表 CREATE TABLE student(id int PRIMARY KEY, name text, age int, genders int, address text ,interest set<text>,phone lis…

【C++】关于代码编译自动更新版本的问题

在写代码的时候&#xff0c;总是需要添加一个版本号&#xff0c;用于后续的版本管理 我常遇到的一个问题是&#xff0c;开发过程中&#xff0c;不一定会记得这件事情&#xff0c;导致有时候会出现同样的版本 于是希望有一个方式&#xff0c;能在编译代码的时候自动生成一个版…