音视频基础

简介: 音视频基础

本篇文章我们来讲一下音视频基础

像素点:

将以下图片的美女眼睛放大 能够看到一个一个的小方块 这就是像素点

照片像素=宽像素点*高像素点

像素点 代码实例:

#include <opencv2/opencv.hpp>
int main() {
    // 创建一个200x100的黑色图像
    cv::Mat image(100, 200, CV_8UC3, cv::Scalar(0, 0, 0));
    // 将某个像素点设为红色
    image.at<cv::Vec3b>(50, 50) = cv::Vec3b(0, 0, 255); // (B, G, R)
    // 显示图像
    cv::imshow("Pixel Image", image);
    cv::waitKey(0);
    return 0;
}

 

分辩率:

图像或者视频的分辨率是指图像的大小或者尺寸 我们通常用像素表示图像的尺寸

图像的分辨率越高 图像就越清晰

例子: 360p(640*360)  宽640 高360

位深

位深通常是8bit  8bit能表示256种颜色  RGB能表示(256*256*256)种颜色

帧率

常见的帧率有以下几种(了解):

  1. 24帧/秒:这是电影行业中使用最广泛的帧率,也被称为电影标准帧率。
  2. 30帧/秒:这是视频游戏、电视节目和大部分在线视频平台使用的标准帧率之一。
  3. 60帧/秒:这是较高的帧率,用于提供更流畅的动画和游戏体验。在电竞领域以及某些要求高画质的视频制作中常见。
  4. 120帧/秒或更高:这些超高帧率通常在专业游戏竞技场景、VR(虚拟现实)设备等领域使用,以提供更快速、真实感觉的动画和交互体验。

需要注意的是,不同设备和应用程序对于可支持的帧率有不同要求,而且显示器硬件本身也会有限制。因此,在选择使用何种帧率时需考虑到具体情况和设备能力

帧率代码实例:

#include <opencv2/opencv.hpp>
int main() {
    // 打开视频文件
    cv::VideoCapture video("path_to_video_file");
    if (!video.isOpened()) {
        std::cout << "无法打开视频文件" << std::endl;
        return -1;
    }
    // 循环读取帧并计算帧率
    double fps;
    cv::Mat frame;
    while (true) {
        double start = cv::getTickCount(); // 记录起始时间
        if (!video.read(frame)) { // 读取帧
            break;
        }
        // 在图像上绘制帧率信息
        cv::putText(frame, "FPS: " + std::to_string(fps), cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2);
        cv::imshow("Video", frame);
        if (cv::waitKey(1) == 'q') { // 按下 'q' 键退出循环
            break;
        }
        double end = cv::getTickCount(); // 记录结束时间
        double totalTime = (end - start) / cv::getTickFrequency(); // 计算经过的时间(秒)
        
        fps = 1.0 / totalTime; // 计算帧率(每秒显示的帧数)
    }
    video.release();
    cv::destroyAllWindows();
    return 0;
}

本段代码采用的是opencv库来实现 喜欢的朋友可以深入了解

码率:

单位时间内码率越高 分辨率就越高 就越清晰

 

步长(Stride):

Stride决定了每次滑动的距离,它可以控制输出尺寸的大小以及运算的速度。当Stride为1时,滑动窗口/卷积核按一个像素的间隔依次遍历输入数据;而当Stride大于1时,滑动窗口/卷积核每次跳过多个像素进行下一次计算

较小的Stride值可以产生更多的输出特征图,在某些情况下可能会提取更详细的特征信息。然而,较大的Stride值会减少输出特征图的尺寸并降低计算复杂性。

以下是一个示例说明Stride对输出尺寸影响:

假设输入图像尺寸为W x H(宽度 x 高度),滑动窗口或卷积核大小为K x K,那么使用Stride=S后,输出特征图尺寸为: ( (W - K) / S + 1 ) x ( (H - K) / S + 1 )

通过调整Stride参数可以控制输出特征图的空间分辨率和大小。同时需要注意,过大或过小的Stride值可能导致信息损失或计算资源的浪费,因此在选择Stride时需要权衡性能和特征提取的需求。

 

总结: 以上描述了图像的一些常用基础  在我们学习音视频的过程中 还是要以基础打起  在追求质量的同时追求速度  搞清楚位深 步长等概念 搞清楚图像的基本元素

好了 本篇文章就到这里结束了 在这里 小编想向大家推荐一个课程:

https://xxetb.xetslk.com/s/2PjJ3T

相关文章
社区供稿 | 魔搭Agent创意挑战赛作品体验感受
近期在闲逛知乎时看到魔搭发起了一个Agent创新应用比赛,看了下奖金还挺高的呀( •̀ ω •́ )y
|
5月前
|
人工智能 弹性计算 安全
阿里云无影云电脑价格:企业版费用、个人版收费及免费无影云电脑申请流程
阿里云无影云电脑提供企业版与个人版,企业版4核8G低至199元/年,支持办公及GPU设计;个人版黄金款14元/月起,最高黑金款149元/月,畅享云游戏与AI开发。另有免费试用1个月可申请。
1824 159
|
机器学习/深度学习 算法
【MATLAB】CEEMD_LSTM神经网络时序预测算法
【MATLAB】CEEMD_LSTM神经网络时序预测算法
196 0
|
网络协议 物联网 网络安全
|
人工智能 自然语言处理 算法
《DevEco CodeGenie——人工智能开发者的得力助手》
华为推出的DevEco CodeGenie为AI开发者提供了全方位的支持,涵盖智能知识问答、代码补全与生成、万能卡片生成等功能。它基于生成式搜索能力,快速解决开发难题,显著提升开发效率,缩短项目周期。尤其对新手友好,降低入门门槛,助力其快速上手鸿蒙原生应用开发。通过解放开发者于繁琐任务中,激发创新思维,专注于业务逻辑实现与技术创新,推动AI技术在鸿蒙生态中的深度融合与发展。
523 21
|
安全 Android开发 数据安全/隐私保护
其实安卓手机也可以做到和苹果一样安全,只是他们不这样做
其实安卓手机也可以做到和苹果一样安全,只是他们不这样做
|
前端开发 数据建模 芯片
DC-DC产品设计PCB注意事项
DC-DC电路Layout设计对性能影响大,不良布局可导致EMI干扰、地线噪声和电压降,影响效率。关键原则包括:缩短开关大电流回路,电感、输入电容靠近对应管脚,单点接地以隔离信号地和功率地。布局时,输入输出电容地应紧密连接,敏感信号远离SW管脚。遵循制造商规格书中的layout指南可确保更好的稳定性和效率。
477 7
|
编解码 前端开发 JavaScript
构建响应式Web应用:现代前端框架的比较与实践
【2月更文挑战第26天】 在移动互联网时代,响应式Web设计已成为前端开发的核心要素。本文深入探讨了当前流行的前端框架——React, Vue和Angular,在构建响应式应用方面的优劣对比,并通过具体案例展示如何利用这些框架实现跨终端兼容的界面。文章不仅剖析了各框架的技术特性,还提供了实战中的性能优化建议,旨在为开发者提供全面、实用的前端技术指南。
|
存储 架构师 文件存储
云端渲染时长1.58亿核小时,阿里云助力国漫巨制《新神榜:杨戬》提升视效
阿里云E-HPC为影视渲染全流程量身定做的方案有幸成为诸多中国数字内容创作佳片后的推手,带来生产关系的改变
云端渲染时长1.58亿核小时,阿里云助力国漫巨制《新神榜:杨戬》提升视效

热门文章

最新文章

下一篇
开通oss服务