哪家公司的网站做得好/百度快速收录权限域名

哪家公司的网站做得好,百度快速收录权限域名,商城网站建设浩森宇特,如何利用网站开发国外客户一、图像/视频的基本属性 在计算机视觉中,图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。 宽度(W) 和 高度(H) 定义了图像的像素分辨率,单位通常是像素。例如,一张 1920x10…

一、图像/视频的基本属性

在计算机视觉中,图像和视频的本质是多维数值矩阵。图像或视频数据的一些基本属性。

  • 宽度(W)高度(H) 定义了图像的像素分辨率,单位通常是像素。例如,一张 1920x1080 的图像有 1920 列(宽度)和 1080 行(高度)。
  • 通道(C) 表示图像的颜色空间,常见的有RGB(红、绿、蓝)三通道彩色图像和单通道灰度图像。

在深度学习框架中,通常使用四维数组 [batch_size, channel, height, width] 或简称 [N, C, H, W] 来表示一批图像的数据格式。而对于视频数据,我们则需要额外增加一个时间维度,即 [batch_size, channel, height, width, time_step],将视频拆解为单帧图像后,复用图像处理逻辑。

RGB三通道彩色图像和单通道灰度图像是数字图像处理中的两种基本类型,它们在色彩表示、数据存储以及应用场景等方面有着显著的区别。理解这两者的差异有助于更好地进行图像处理与分析。

二、理解彩色与灰度图像

2.1 RGB三通道彩色图像

  • 定义:RGB图像由红(Red)、绿(Green)、蓝(Blue)三个颜色通道组成。每个像素的颜色通过这三个通道的不同强度组合来表示。每个通道通常是一个8位的整数,取值范围为0到255。

  • 色彩表示

    • 每个像素点由三个数值(R, G, B)组成,分别对应红色、绿色和蓝色的强度。
    • 这种模式允许表示超过1600万种不同的颜色((256^3)),从而可以精确地再现自然界的大多数颜色。
  • 应用场景:适用于需要高保真度色彩再现的应用场景,如照片编辑、影视制作、游戏开发等。

2.2 单通道灰度图像

  • 定义:灰度图像仅包含一个通道,用来表示亮度信息。每个像素的值代表该点的亮度级别,范围通常是0(黑色)到255(白色),中间值则表示不同深浅的灰色。

  • 色彩表示

    • 因为只有一个通道,所以每个像素只需要一个数值来表示其亮度。
    • 尽管只能显示从黑到白的不同灰度级,但这种简化有时对于特定任务来说已经足够,并且能减少计算复杂度和存储需求。
  • 应用场景:常用于文本识别、边缘检测、医学影像分析等领域,在这些领域中,颜色信息并非关键因素,而对比度和亮度的变化更为重要。

2.3 区别总结

  1. 信息量

    • RGB图像包含了更多的信息(每个像素3个值),能够表达丰富的色彩。
    • 灰度图像每个像素只有1个值,信息量较少,但足以描述图像的亮度分布。
  2. 存储空间

    • RGB图像占用的空间大约是灰度图像的三倍,因为需要存储三个通道的数据。
  3. 处理速度

    • 处理灰度图像通常比处理RGB图像更快,因为它涉及的数据量较小。
  4. 用途

    • RGB图像适合于那些依赖色彩区分的任务,比如物体识别、场景分类等。
    • 灰度图像更适合于那些基于形状或纹理特征的任务,例如文档扫描、X光片分析等。
  5. 转换关系

    • 可以通过一定的算法将RGB图像转换为灰度图像,常用的方法之一是加权平均法,即根据人眼对不同颜色敏感度的不同,给RGB分量赋予不同的权重来计算灰度值。例如,常用的公式为:Gray = 0.299*R + 0.587*G + 0.114*B

三、图像的读取框架

Python 生态中有三大主流图像处理库,各有适用场景:

3.1 Matplotlib

Matplotlib 是一个强大的数据可视化工具,它模仿了 Matlab 的绘图功能。虽然它没有内置的图像处理功能(如旋转、滤波),需手动实现。但可以方便地与 科学计算库NumPy 结合使用来进行图像操作。

from matplotlib import pyplot as plt
import numpy as np
# 读取为 [H, W, C] 的 NumPy 数组(RGB)
img = plt.imread("哪吒.jpeg")        
H, W, C = img.shape
print(img.shape) # 输出(2160, 3840, 3)
# 显示图像
plt.imshow(img)                     
# 保存图像
plt.imsave("哪吒output.jpeg", img)       

在这里插入图片描述

# 提取红色通道并显示为灰度图
img_r = img[:, :, 0]
plt.imshow(img_r, cmap="gray")

在这里插入图片描述

# 下采样(每4像素取1个)
plt.imshow(img[::4, ::4, :])

从尺度上看,图像的像素点少了 4 分之 1
在这里插入图片描述

# 截取左上角 1/4 图像
plt.imshow(img[:H//2, :W//2, :])

在这里插入图片描述

3.2 OpenCV

OpenCV 是计算机视觉领域的金标准库,功能全面,覆盖图像处理、视频分析、实时摄像头捕获,底层为 C++ 实现,Python 通过 cv2 模块调用,支持特征检测、目标跟踪、AR 等高级功能。

通过 pip install opencv-python 即可安装。

import cv2# 读取图像
# 读取为 [H, W, C] 的 BGR 格式数组
img = cv2.imread(filename="哪吒.jpeg")          
print(img.shape)  # 注意OpenCV默认读取为BGR格式
# 显示图像
cv2.imshow(winname = "Window", mat=img)             
# 等待按键
cv2.waitKey(delay=0)                        
# 关闭窗口
cv2.destroyAllWindows()               

使用 OpenCV 库从摄像头捕获视频流并在窗口中实时显示每一帧,直到用户按下 ESC 键退出


# 视频读取示例
# 创建一个 VideoCapture 对象,参数 0 表示使用第一个可用的摄像头(笔记本内置摄像头或连接的第一个外置摄像头)。如果你有多个摄像头,可以通过改变这个数字来选择不同的设备(如第二个摄像头可以使用 1)。
cap = cv2.VideoCapture(0)
# 开始一个无限循环,用于持续读取和处理视频帧,直到满足特定条件退出循环。
while True:# 读取帧# cap.read(): 从摄像头读取下一帧。此方法返回两个值:# status: 布尔值,表示是否成功读取了帧。如果为 True,则表示成功读取;如果为 False,则表示读取失败。# frame: 当前捕获的帧,通常是一个 NumPy 数组,包含图像数据。status, frame = cap.read()if not status: break# 显示帧# 在名为 "demo" 的窗口中显示当前帧 frame# 每次调用此函数都会更新窗口中的图像。cv2.imshow(winname="demo", mat=frame)# 按 ESC 退出# 等待按键事件。参数 delay 指定了等待的时间(以毫秒为单位)。# 这里设置为 1000 // 24,即大约每秒24帧的速度(模拟电影的帧率),这意味着每帧之间会有短暂的延迟。# 如果检测到按下了 ESC 键(ASCII码为27),则跳出循环并结束程序。if cv2.waitKey(delay=1000 // 24) == 27: break
# 释放摄像头资源,确保摄像头不再被占用,以便其他应用程序可以访问它。
cap.release()
# 关闭所有由 OpenCV 创建的窗口,释放相关资源。
cv2.destroyAllWindows()

3.3 PIL

PIL (Python Imaging Library) 轻量级图像处理, 是专门用于图像处理的 Python 库,Python 内置库,适合简单编辑与格式转换。易于使用且能无缝衔接 PyTorch。

from PIL import Imageimg = Image.open("哪吒.jpeg")          # 读取为 PIL.Image 对象
print(img.size, img.width) # 输出 (3840, 2160) 3840
img.resize((100, 100))                # 调整尺寸
img.rotate(-20)                       # 旋转
img.convert("L")                      # 转灰度图
np.array(img).shape
img.save(fp="哪吒2.jpeg")              # 保存

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

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

相关文章

C语言基本概念————讨论sqrt()和pow()函数与整数的关系

本文来源:C语言基本概念——讨论sqrt()和pow()函数与整数的关系. C语言基本概念——sqrt和pow函数与整数的关系 1. 使用sqrt()是否可以得到完全平方数的精确的整数平方根1.1 完全平方数的计算结果是否精确?1.2 为什么不会出现误差(如 1.99999…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<10>

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 今天我们继续来复习指针… 目录 一、看一段代码二、 一维数组传参的本质三、冒泡排序3.1 基本思想四、二…

idea 错误: 找不到或无法加载主类 @C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448

idea 错误: 找不到或无法加载主类 C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448 该错误往往和左下角爱弹出的如下提示是一个意思 Error running ‘PayV3Test1.testTransferBatchesBatchId’ Error running PayV3Test1.testTransferBatchesBatchId. Command lin…

Next.js【实用教程】2025最新版

官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护,旨在解决单页应用(SPA)和多页应用(MPA)在性能和 SEO 上的不足。 核心特性 服务端渲染(SSR)--…

文字转语音(四)使用jacob库实现

项目中有相关的功能,就简单研究了一下。 实现原理 ACOB 库:JAva COM Bridge,允许 Java 通过 COM 接口调用 Windows 组件(如 SAPI)Speech API (SAPI):Windows 内置的语音引擎,支持 TTS 功能。 …

KEPServerEX 中信道深入介绍

以下是 KEPServerEX 中信道(Channel) 的详细介绍,涵盖其定义、功能、配置步骤及最佳实践,帮助您快速掌握信道在数据采集中的核心作用: 一、信道(Channel)的定义 信道 是 KEPServerEX 中 连接物…

Shell脚本笔记

Linux其他命令 Shell脚本笔记

K8S下载离线安装包所需文件

下载相关文件 官网下载地址集合https://kubernetes.io/zh-cn/releases/download/ 下载相关镜像 官网镜像描述 所有 Kubernetes 容器镜像都被部署到 registry.k8s.io 容器镜像仓库。 容器镜像支持架构registry.k8s.io/kube-apiserver:v1.32.0amd64, arm, arm64, ppc64le, …

Vivado生成edif网表及其使用

介绍如何在Vivado中将模块设为顶层,并生成相应的网表文件(Verilog文件和edif文件),该过程适用于需要将一个模块作为顶层设计进行综合,并生成用于其他工程中的网表文件的情况。 例如要将fpga_top模块制作成网表给其它工…

企业网站建站源码 网站源码程序下载

在数字化时代,企业网站已成为企业展示形象、推广产品、服务客户的重要窗口。而选择合适的建站源码,则是搭建一个功能强大、美观易用的企业网站的关键。 一、企业网站建站源码的优势 降低成本: 相较于定制开发,使用建站源码可以大…

Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1)

Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1) import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.HardwareRenderer import android.graphics.PixelFormat import android.graphic…

vue3实战-----封装和使用svg图标

vue3实战-----封装和使用svg图标 1.安装和配置svg插件2.解决引入虚拟模块失败的问题3.使用svg4.封装svg组件5.自定义插件注册svg全局组件 在开发项目的时候经常会用到svg矢量图,使用SVG以后,页面上加载的不再是图片资源,这对页面性能来说是个很大的提升,我们SVG文件比img要小的…

DeepSeek正重构人形机器人和具身大模型赛道!

中国人工智能公司DeepSeek(深度求索)以“低成本、高效率、强开放”的研发范式横空出世,火遍并震撼全球科技圈;DeepSeek展现出来的核心竞争力,除了低成本及推理能力,更重要的是开源模型能力追赶上了最新的闭…

oracle使用动态sql将多层级组织展平

ERP或者其他企业管理软件中都会有一张组织机构表,可以写固定sql的方式将其展平获取组织表中的字段信息,如负责人、上级组织负责人、分管领导、成立时间等。但是这种方式有个缺陷,就是如果只写到处理4个层级,那么后期层级增多就无法…

分布式光纤传感:为生活编织“感知密网”

分布式光纤测温技术虽以工业场景为核心,但其衍生的安全效益已逐步渗透至日常生活。 分布式光纤测温技术(DTS)作为一种先进的线型温度监测手段,近年来在多个领域展现了其独特的优势。虽然其核心应用场景主要集中在工业、能源和基础…

本地基于GGUF部署的DeepSeek实现轻量级调优之二:检索增强生成(RAG)

前文,我们在本地windows电脑基于GGUF文件,部署了DeepSeek R1 1.5B模型,如果想在离线模式下加载本地的DeepSeek模型自行对进行训练时,是不能直接使用GGUF文件进行训练的,但是可以对模型进行微调,以下说的是第…

Win10环境借助DockerDesktop部署最新MySQL9.2

Win10环境借助DockerDesktop部署最新MySQL9.2 前言 作为一杆主要撸Java的大数据平台开发攻城狮,必不可少要折腾各种组件,环境和版本一直是很头疼的事情。虽然可以借助Anaconda来托管Python的环境,也可以使用多个虚拟机来部署不同的环境&…

细说STM32F407单片机RTC的基本原理及闹钟和周期唤醒功能的使用方法

目录 一、RTC基础知识 1、 RTC的功能 2、RTC工作原理 (1)RTC的时钟信号源 (2)预分频器 (3)实时时钟和日历数据 (4)周期性自动唤醒 (5)可编程闹钟 &a…

Docker的深入浅出

目录 Docker引擎 Docker镜像 (镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包) Docker容器 应用容器化--Docker化 最佳…

Unity中自定义协程的简单实现

在 Unity 中,协程(Coroutine)是一种非常强大的工具,它允许我们在不阻塞主线程的情况下,将代码的执行分成多个步骤,在不同的帧中执行。 Unity中协程实现原理 迭代器与状态机:本质上是基于C#的迭…