OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】(下)

简介: OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】

2.2.2 按位或 cv2.bitwise_or()

使用按位或运算对图像操作可以取得与按位与相反的处理结果。

import cv2
import numpy as np
img1 = cv2.imread("pic.jpg")
mask = np.zeros(img1.shape, np.uint8)
# 横着的白色区域
mask[490:600, :, :] = 255
# 竖着的白色区域
mask[:, 470:545, :] = 255
img2 = cv2.bitwise_or(img1, mask)
cv2.imshow("img", img2)
cv2.waitKey()
cv2.destroyAllWindows()

1.png

2.2.3 按位取反 cv2.bitwise_not()

按位取反是仅对一个图像做的操作,根据二进制,如果某位置上数值为0,则改为1;如果为1则该为0。

import cv2
img1 = cv2.imread("pic.jpg")
img2 = cv2.bitwise_not(img1)
cv2.imshow("img", img2)
cv2.waitKey()
cv2.destroyAllWindows()

处理结果如下图所示:

image.png

2.2.4 按位异或 cv2.bitwise_xor()

对二进制位进行判断,如果两个运算数的同一位上的数字相同,则运算结果的相同位数字取0,否则取1。

这个描述有些抽象。可以简单理解为,催掩码匹配到的区域做取反运算,掩码匹配不到的区域保持图像原状。具体见下方图像:

import cv2
import numpy as np
img1 = cv2.imread("pic.jpg")
mask = np.zeros(img1.shape, np.uint8)
# 横着的白色区域
mask[490:600, :, :] = 255
# 竖着的白色区域
mask[:, 470:545, :] = 255
img = cv2.bitwise_xor(img1, mask)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

效果呈现:

image.png

2.3 图像加密

通过按位异或运算,还可以实现对图像的加密。使用numpy创建随机数组的方法,创建一个随机像素值图像作为密匙,进而实现对原图像的加密和解密。结果因图片过大不再展示。

import cv2
import numpy as np
# 定义加密、解密方法
def encode_img(img, img_key):
    result = img = cv2.bitwise_xor(img, img_key)
    return result
# 原图
img = cv2.imread("pic.jpg")
rows, colmns, channel = img.shape
# 创建大小相等的密钥图像
img_key = np.random.randint(0, 256, (rows, colmns, 3), np.uint8)
cv2.imshow("img", img)
cv2.imshow("img_key", img_key)
Encryption_result = encode_img(img, img_key)
cv2.imshow("After Encryption", Encryption_result)
Decryption_result = encode_img(Encryption_result, img_key)
cv2.imshow("After Decryption", Decryption_result)
cv2.waitKey()
cv2.destroyAllWindows()

3.图像的合并

图像合并也是图像处理的一种常用操作,图像合并可以分为加权合并和覆盖合并。

再找一张与pic.jpg相同尺寸、名为“pic2.jpg”的图片如下图所示:

image.png

将该图片与pic.jpg分别按照0.2和0.8的权重进行合并,代码即执行效果如下:

3.1加权合并

import cv2
img1 = cv2.imread("pic.jpg")
img2 = cv2.imread("pic2.jpg")
rows, colmns, channel = img1.shape
img3 = cv2.resize(img2, (colmns, rows))
img = cv2.addWeighted(img1, 0.8, img3, 0.2, 0)
cv2.imshow("new_pic", img)
cv2.waitKey()
cv2.destroyAllWindows()

image.png

3.2 覆盖合并

OpenCV没有直接提供覆盖操作的方法,因此要实现覆盖还需要自己动手。

以下边这张金底白字的标签图片为例(pic3.png),

image.png

将其贴在pic.jpg上(覆盖)

import cv2
img1 = cv2.imread("pic.jpg")
img2 = cv2.resize(cv2.imread("pic3.png"), dsize=None, fx=2, fy=2)
y, x, z = img2.shape
X = 180
Y = 70
img1[Y:Y+y, X:X+x, :] = img2
cv2.imshow("new_pic", img1)
cv2.waitKey()
cv2.destroyAllWindows()

效果呈现如下

1.png

目录
相关文章
|
12月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
3228 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
7月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
397 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
8月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
658 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
10月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
498 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
9月前
|
XML 机器学习/深度学习 人工智能
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
361 10
|
11月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
287 3
|
12月前
|
计算机视觉 Python
python利用pyqt5和opencv打开电脑摄像头并进行拍照
本项目使用Python的PyQt5和OpenCV库实现了一个简单的摄像头应用。用户可以通过界面按钮打开或关闭摄像头,并实时预览视频流。点击“拍照”按钮可以捕捉当前画面并保存为图片文件。该应用适用于简单的图像采集和处理任务。
744 0
python利用pyqt5和opencv打开电脑摄像头并进行拍照
|
JSON API 数据格式
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
Python| 如何使用 DALL·E 和 OpenAI API 生成图像(2)
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
169 4
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制

推荐镜像

更多