【图像识别】openCV基础知识

图像处理基础

一、使用OpenCV前要准备的工作

1.先导入需要用到的库

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

2.自定义,图片展示函数

定义好了,调用方便。

def show(img):
    if img.ndim == 2: #这句话是用来判断是否为灰度图的
        plt.imshow(img, cmap='gray', vmin=0, vmax=255)
    else:
        plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))

二、开始学习常用函数

1.生成随机整数

random_int = np.random.randint(low, high=None, size=None, dtype=int)

①. 函数说明

low:生成的随机整数范围的下限(包含),默认为0。
high:生成的随机整数范围的上限(不包含)。
size:生成的随机整数的形状,可以是整数、元组或列表,默认为None。
【参数为 (x,y)生成的整数为二维的,就是灰度图嘛; (x,y,z)生成的整数为三维的,那就是彩色图咯!】
dtype:生成的随机整数的数据类型,默认为int。
a. 生成一个范围在0到9之间(包含0,不包含9)的随机整数:
random_int = np.random.randint(0, 9)
print(random_int)
b. 生成一个范围在5到10之间(包含5,不包含10)的2x3的随机整数矩阵:
random_int_matrix = np.random.randint(5, 10, size=(2, 3))
print(random_int_matrix)

②.代码

a. 二维灰度图
A = np.random.randint(0,256,(2,4),dtype = np.uint8)
A
show(A)
b. 三维彩色图
B = np.random.randint(0,256,(2,4,3),dtype = np.uint8)
B
show(B)

③.代码现象

a. 二维灰度图

在这里插入图片描述

b. 三维彩色图

在这里插入图片描述

2.通道的分离与合并

①先导入一张图片

img = cv.imread('pic/cubic500x500.jpg')
show(img)

在这里插入图片描述

② 将其RGB分离开

b,g,r = cv.split(img)
show(r)
函数说明

cv.split() 是 OpenCV 库中用于分离图像通道的函数。它将输入的彩色图像分离成每个通道的单独图像。
在函数调用 b,g,r = cv.split(img) 中,img 是输入的彩色图像。函数将会返回三个分别表示蓝色通道、绿色通道和红色通道的图像。

在这里插入图片描述

③可以查看当前图片的尺寸与通道数

img.shape

很容易看得出来,500,500 对应图片的尺寸,3 对应通道数(彩色的)

在这里插入图片描述

函数说明

img.shape 是一个 NumPy 数组属性,用于获取图像的形状信息。
对于一张图像,它通常由三个维度构成:高度、宽度和通道数。img.shape 返回一个表示图像形状的元组,其中包含这三个维度的值。
如果图像是灰度图像,则只有高度和宽度两个维度;如果图像是彩色图像,则还包含通道数(通常为 3)。

④将分离开的图像通道合并成一张彩色图

img2 = cv.merge([b, g, r])
show(img2)
函数说明

cv.merge() 是 OpenCV 库中用于将分离的图像通道合并成彩色图像的函数。它接受一个由各通道图像组成的列表作为输入,并返回一个合并后的彩色图像。
在函数调用 img2 = cv.merge([b, g, r]) 中,[b, g, r] 是一个包含蓝色通道、绿色通道和红色通道图像的列表。函数将会将这些通道图像合并成一张彩色图像,并将结果赋值给 img2。

在这里插入图片描述

3.彩色图转灰度图

①可以将上面分离出来的r、g、b 按照比例相加,便可转化为灰度图

相乘的分数值,和为1即可。太大,太小会出现问题
在这里插入图片描述

a.再将其转换成uint8类型的,方便后续处理

两种方式:

gray2 = np.uint8(gray1)
gray2
gray3 = gray1.astype(np.uint8)
gray3

②OpenCV提供的函数

gray4 = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
show(gray4)

思考:灰度图可以转换回彩色图吗?

灰度图像转换回彩色图像的过程是一个无法还原的操作,因为在将彩色图像转换为灰度图像时,颜色信息已经丢失了。所以从灰度图像直接恢复到原始的彩色图像是不可能的。
然而,你可以通过一些方法将灰度图像着色来生成一张类似于彩色图像的图像,但这并不是真实的彩色。这种方法被称为着色化或彩色重建。
一种常见的着色化方法是使用深度学习模型,它可以从灰度图像中学习到彩色映射。这些模型通过训练大量的彩色图像和对应的灰度图像对来学习映射关系,并用于将灰度图像着色。

4.图像二值化

二值化嘛,很形象,看代码

① 直接写

在这里插入图片描述

① OpenCV提供的函数

在这里插入图片描述
在这里插入图片描述

4.图像运算

黑的是1,白的是0,灰色的是介于0和1之间的值

① 相乘(掩膜)

在这里插入图片描述

① 相除(矫正设备,比较差异)

在这里插入图片描述

5. 两图像 相加减乘除

在这里插入图片描述

① 相加

a.这样直接相加的话,当2个点的值大于255时,它的差值 会自动跳到从1开始

在这里插入图片描述

b.而OpenCV提供的函数则不会,当和超过255时,它会自动固定在最大值255

在这里插入图片描述

c.优化:给两张相加的图各乘1个0.5,bingo!

在这里插入图片描述

d.虽然与c.的现象差不多,但是它们的数据类型是不一样的

c.乘完以后,会被转换成浮点数的形式
d.则会保留原始的 uint8
在这里插入图片描述
在这里插入图片描述

② 相减

注意直接相减 与 OpenCV库函数的不同

在这里插入图片描述

③ 相乘

细节

因为【数据类型要相同】前面mask/255 变成了浮点数,所以 前面的obj也要变为浮点数
在这里插入图片描述

④ 相除

在这里插入图片描述

5. 两图像 相加减乘除

我对它的理解是可以调节图像的亮度
然后GPT是说:可以用于调整图像的亮度、对比度、颜色平衡等,同时也可以进行更加复杂的图像增强和改善。
在这里插入图片描述

三、小任务:图像融合

1、导入图片

在这里插入图片描述

2、提取所需要的特征

M/255 就全变黑了。就是原本黑的地方值为0,(原来是255)白的地方值为1
1-M 就是把把白的地方变为0,黑的0变为255(就成白色的了)颜色反转。然后A乘(1-M)就是原本有花的地方保留,中心被掏了(0乘多少还是0);
B * M 同理。
在这里插入图片描述

3、结果就融合啦

在这里插入图片描述

4、保存

在这里插入图片描述

每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

  • 8
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
图像识别是一种人工智能技术,以计算机视觉为基础,能够对数字图像进行自动分析与识别。与传统的图像处理方法相比,图像识别具有更高的智能性和准确性。 图像识别技术在很多领域有着广泛的应用,比如安防监控、自动驾驶、医学影像分析等。例如,在安防监控领域,图像识别可以根据图像中的人物特征或行为模式,自动识别出可疑人员或异常事件,并及时发出警报,提高了安全性和可靠性。 图像识别的基本步骤包括图像采集、图像预处理、特征提取与选择、分类器的训练与评估等。其中,特征提取是图像识别的关键步骤,通常使用机器学习或深度学习的方法,将图像的像素值转化为高层次的语义特征,以便进行分类与识别。 近年来,随着深度学习的发展,图像识别的准确率和效果有了显著提升。深度学习模型如卷积神经网络(CNN)在图像识别中取得了很大成功,能够自动学习和提取图像中的特征,并进行高效的分类与识别。 尽管图像识别取得了很大的进展,但仍然存在一些挑战。例如,在复杂背景下的目标检测、光照变化、遮挡和旋转等问题仍然是困扰图像识别的难题。此外,数据集的质量和规模也对图像识别的准确度有着很大的影响。 总结而言,图像识别人工智能领域具有广泛的应用前景,并且随着技术的不断发展,其准确率和效果将不断提高,为我们的生活和工作带来更多的便利和效益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值