首页 > 其他分享 >若楠带你初识OpenCV(1)-- 视频、图片基础处理,颜色获取

若楠带你初识OpenCV(1)-- 视频、图片基础处理,颜色获取

时间:2024-09-03 14:52:41浏览次数:7  
标签:读取 -- cv2 若楠 OpenCV 240 通道 图片

文章目录

OpenCV

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它主要用于实时图像处理和计算机视觉任务。

一、核心功能

OpenCV提供了丰富的功能,包括但不限于以下几个方面:

  1. 图像处理:包括图像加载、保存、调整大小、旋转、裁剪、滤波、边缘检测等。OpenCV提供了多种图像滤波器,如模糊、高斯模糊、Canny边缘检测器等。
  2. 物体检测与跟踪:OpenCV提供了多种目标检测和跟踪算法,如Haar级联检测器、HOG特征检测器、卡尔曼滤波器等,这些算法可以用于人脸检测、行人检测、车牌识别等应用。
  3. 特征提取与匹配:包括角点检测、描述符提取、特征匹配等,这些功能有助于从图像中提取关键信息并进行比较和分析。
  4. 机器学习:OpenCV集成了分类、聚类、回归等机器学习算法,可以方便地进行模式识别和数据挖掘。
  5. 深度学习:OpenCV提供了与主流深度学习框架(如TensorFlow、PyTorch)的集成接口,支持神经网络模型的训练和推断。
  6. 视频分析:包括视频捕捉、视频处理、目标跟踪、视频稳定等功能,适用于监控和安全等应用。

二、初识OpenCV

本篇所用数据:
链接: <数据>
提取码: dzvx

1. 安装OpenCV

pip install opencv

2. 读取图片

import cv2
a = cv2.imread('GGbond.jpg') #读取图片信息,返回三维数组
cv2.imshow('pig',a) #显示图片
b = cv2.waitKey(10000) #图片显示等待时间
print(b)	#返回关闭图片时,点击的按钮对应的ACCII码值
cv2.destroyAllWindows()	#关闭所有窗口

print("图片形状:",a.shape)
print("图片数据类型:",a.dtype)
print("图片大小:",a.size)
---------------------------
27
图片形状: (1070, 1080, 3)
图片数据类型: uint8
图片大小: 3466800

在这里插入图片描述

3. 读取灰度图

将彩色图片转化为灰度图

b = cv2.imread('GGbond.jpg',cv2.IMREAD_GRAYSCALE) #或者将cv2.IMREAD_GRAYSCALE用0代替,也可以加载灰度图
print(b)
cv2.imshow('pig_gary',b) #展示图片,可以给展示的图片命名
a = cv2.waitKey(0)	#cv2.waitKey设置参数为0时,表示图片一直展示,知道主动关闭
cv2.destroyAllWindows()

print("图片形状:",b.shape)
print("图片数据类型:",b.dtype)
print("图片大小:",b.size)
---------------------
[[230 235 240 ... 239 239 239]
 [230 235 240 ... 240 239 239]
 [230 235 240 ... 240 240 240]
 ...
 [227 231 236 ... 240 240 240]
 [227 231 236 ... 240 240 240]
 [227 231 236 ... 240 240 240]]
图片形状: (1070, 1080)
图片数据类型: uint8
图片大小: 1155600

在这里插入图片描述

4. 图片保存

#图片保存
cv2.imwrite('GGbond_gary.jpg',b)

在这里插入图片描述

5. 视频文件读取

此处注意哦,视频的读取实则本质上是读取视频中每一帧的图片,通过将下一张图片覆盖上一张,形成视频的效果:

#打开视频文件
video_capture = cv2.VideoCapture('video.mp4') #仅输入参数0,可以打开摄像头

if not video_capture.isOpened():
    print("无法打开视频文件")
    exit()

#每次读取的都是一帧画面,通过循环,将下一帧的画面覆盖上一个画面,形成视频效果
while True:
    ret,frame = video_capture.read() #读取每一帧画面
    if not ret:
        break

    new_frame = cv2.resize(frame,dsize=None,fx=0.5,fy=0.5) #改变视频显示大小
    new_frame = cv2.cvtColor(new_frame,cv2.COLOR_BGR2GRAY) #将每一帧转化为灰度图
    cv2.imshow('Video',new_frame) #展示每一帧的画面
    if cv2.waitKey(30) == 27: #按下esc键,结束循环
        break

#释放资源:每次读取视频时,每一帧画面占据内存,及时释放清理
video_capture.release()
cv2.destroyAllWindows()

6. 区域截取

截取指定区域的图片:

a = cv2.imread('GGbond.jpg')
b = a[300:800,300:800]	#【垂直方向多少行,水平方向多少列】
cv2.imshow('yuantu',a)
cv2.imshow('qiepian',b)
cv2.waitKey(10000)
cv2.destroyAllWindows()

在这里插入图片描述

7. 提取RGB通道颜色

特别注意!!!opencv在处理图片时,颜色顺序为BGR!!

我们知道,在读取一个图片时,返回的是一个三位数组,而其中的第三个通道代表的就是颜色,所以我们获取RGB时,可通过一下方法获取:

#opencv处理颜色数据顺序为BGR
a = cv2.imread('GGbond.jpg')

#提取颜色通道
a1 = a[:,:,0] #提取B通道
a2 = a[:,:,1] #提取G通道
a3 = a[:,:,2] #提取R通道

或者通过split方法分离颜色通道:

#或通过split方法分离颜色通道
b,g,r = cv2.split(a)

提取通道后我们来看看提取后的图片,以蓝色为例:

cv2.imshow('result',b) #展示蓝色通道
#但是显示结果时,显示的是灰度图,因为其它两个通道默认值为255,所以需要手动调整值
cv2.waitKey(10000)
cv2.destroyAllWindows()

在这里插入图片描述

我们发现,显示的是灰度图,因为其它两个通道默认值为255,所以需要手动调整值:

手动调整通道颜色

#调整通道颜色的值
a_new = a.copy() #复制一个图片,不在原图上操作

#将G,R通道的颜色值,调整为0
a_new[:,:,1] = 0
a_new[:,:,2] = 0

cv2.imshow('result_1',a_new)
cv2.waitKey(10000)
cv2.destroyAllWindows()

在这里插入图片描述

8. 合并颜色通道

我们知道,图片是由一个个像素点组成的,通过每个像素点颜色的不同,凸显形成一个有形状的图片,所以,我们将颜色拼接,即可得到我们想要的图片,使用merge()函数合并:

a = cv2.imread('GGbond.jpg')

#提取颜色通道
a1 = a[:,:,0]
a2 = a[:,:,1]
a3 = a[:,:,2]
#或
b,g,r = cv2.split(a)

#使用merge()函数将三个通道合并成一个图像
img = cv2.merge((b,g,r))
cv2.imshow('result',img)
cv2.waitKey(10000)
cv2.destroyAllWindows()

在这里插入图片描述

总结

本篇介绍了:

  1. OpenCV的功能作用
  2. opencv的部分基本作用:读取图片、读取灰度图、图片保存、视频文件读取、区域截取、提取RGB通道颜色、合并颜色通道
  3. 发现了嘛? 我们本篇学习用的图片很大,怎么将它缩小一点呐?改变它的形状,我们下篇再见哦~

标签:读取,--,cv2,若楠,OpenCV,240,通道,图片
From: https://blog.csdn.net/m0_74896766/article/details/141853122

相关文章

  • 给P人一点小小震撼!铁威马UI全新设计!更友好更美观~
    开学了,小马居然发现有学校竟然玩起了新花样,通过MBTI来分宿舍,这脑洞大开的创意简直让人直呼内行!你是P人还是J人?在MBTI人格分类中,J人喜欢条理清晰的计划,而P人则倾向于随性所欲。想象一下,J人与P人意外成了室友,那画面也是挺有趣的,可能会有不少‘文化碰撞’的时刻呢! 今天给P人一......
  • php获取FTP服务器中文件内容返回给前端
    有一个需求是访问存储在群辉SynologyNAS上的图片,https://ip:port/path/to/image.jpg,用浏览器打开会出现“您的连接不是私密/安全连接”错误。网上检索资料发现可能是因为缺少SSL证书的关系。引用https://www.cloudflare-cn.com/learning/ssl/connection-not-private-explaine......
  • Flink入门-watermark说明
    概要 #了解watermark前先需要明确flink支持的时间语义以及为什么需要watermark。Flink明确支持以下三种时间语义:事件时间(eventtime): 事件产生的时间,记录的是设备生产(或者存储)事件的时间摄取时间(ingestiontime): Flink读取事件时记录的时间处理时间(processi......
  • Python 中读取 Excel 表格数据
    在Python中读取Excel表格数据可以使用 pandas 库,这个库为数据处理和分析提供了强大的工具。以下是如何在Python中读取Excel文件的示例脚本。安装所需库首先,我们需要确保安装了所需的库。主要使用的库是 pandas 和 openpyxl(用于读取Excel文件)。您可以使用以下......
  • [1055]
    Togettheindexofthe“True”valuesinaPandasSeries,youcanusetheindexattributealongwithbooleanindexing.Here’sasimplewaytodoit:ImportPandas:importpandasaspdCreateyourSeries:series=pd.Series([True,False,True,False,......
  • 三角型(C1XT)电动采光排烟天窗
    C1XT三角型电动采光排烟天窗是图集11CJ33《通风采光天窗》中的一款排烟天窗类型,C1XT是三角型下开式电动采光排烟天窗的图集代号,三角型下开式排烟天窗完全开启角度为45°,此类型排烟天窗的防雨性能和防雪性能更强, 排烟天窗洞口尺寸可以做到1000mm、1200mm、1500mm、2000mm。C1......
  • AI绘画实操 Stable Diffusion 到底怎么玩儿,新手必看的AI绘画入门安装使用教程
    大家好,我是灵魂画师向阳2024年,是AI绘画技术飞速发展的一年,各种AI绘画工具层出不穷,为了让大家在了解和学习AI绘画的过程中少走弯路,今天我将详细介绍目前世界上使用用户最多,社区最大,生态最丰富的免费图像生成模型——StableDiffusion,并为你提供详细的安装教程,让你轻松踏入AI......
  • 老照片修复转视频彻底火了,通过AI绘画+视频技术,只需三步超简单出片
    大家好,我是灵魂画师向阳最近网上突然爆火的老照片转成视频不知道大家有没有刷到。这些都是通过AI绘画技术+AI视频图生视频技术完成的,先来看一下网上的成片吧。这一内容为什么会突然火起来呢?大概率是抓住了大家心里的一份情怀吧。大家可以将家里面以前的黑白老照片,或者......
  • 上级最厌恶的表达方式,一定要避免!
    “厌蠢”是每一个上级的第一大忌讳,尤其是发言带有很强的“负能量”,显得“无能又懈怠”,可能会体现在几个方面:>>推卸责任的表述:底层逻辑:职场中应勇于承担责任。推卸责任的表述损害个人信誉和团队信任。例子:“这不是我的错,是市场部没有给我足够的数据。”>>缺乏数据支持......
  • 2024年最佳本地营销策略的14个专家建议
    本地营销对于任何企业都非常重要——无论您是在市中心开设的夫妻店,还是大型的全国连锁店。您都希望能被寻找您产品或服务的人看到和找到,他们往往是在本地进行搜索。事实上,几乎一半的谷歌搜索都带有本地意图。那么,今年有哪些最佳的本地营销趋势和策略能帮助您取得成功呢?今天,我......