鱼眼去锯齿

2023-10-26

#include <stdlib.h>

// 定义图像分辨率
#define WIDTH 3000
#define HEIGHT 3000

int main()
{
    FILE *fin, *fout;
    int32_t x, y;

    // 加载 YUV 文件
    fin = fopen("test.yuv", "rb");
    if (fin == NULL) {
        fprintf(stderr, "Failed to open input file.\n");
        return -1;
    }

    // 读取所有像素数据,以及 U/V 分量数据
    uint8_t (*y_data)[WIDTH] = malloc(HEIGHT * sizeof(*y_data));
    uint8_t (*u_data)[WIDTH/2] = malloc(HEIGHT/2 * sizeof(*u_data));
    uint8_t (*v_data)[WIDTH/2] = malloc(HEIGHT/2 * sizeof(*v_data));

    fread(y_data, sizeof(uint8_t), HEIGHT * WIDTH, fin);
    fread(u_data, sizeof(uint8_t), HEIGHT/2 * WIDTH/2, fin);
    fread(v_data, sizeof(uint8_t), HEIGHT/2 * WIDTH/2, fin);

    fclose(fin);

    // 读取包含坐标点信息的文件
    fin = fopen("output2.txt", "r");
    if (fin == NULL) {
        fprintf(stderr, "Failed to open coordinate file.\n");
        return -1;
    }

    // 将指定像素点的 Y、U、V 值设置为指定值
    while (fscanf(fin, "(%d,%d)\n", &x, &y) == 2) {
        if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT) {
            continue;  // 跳过越界点
        }
        y_data[y][x] = 17;
        u_data[y/2][x/2] = 128;
        v_data[y/2][x/2] = 128;
    }

    fclose(fin);

    // 将修改后的像素数据写回到 YUV 文件中
    fout = fopen("output.yuv", "wb");
    if (fout == NULL) {
        fprintf(stderr, "Failed to open output file.\n");
        return -1;
    }

    fwrite(y_data, sizeof(uint8_t), HEIGHT * WIDTH, fout);
    fwrite(u_data, sizeof(uint8_t), HEIGHT/2 * WIDTH/2, fout);
    fwrite(v_data, sizeof(uint8_t), HEIGHT/2 * WIDTH/2, fout);

    fclose(fout);

    // 释放动态申请的内存
    free(y_data);
    free(u_data);
    free(v_data);

    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

鱼眼去锯齿 的相关文章

随机推荐

  • Spring的第一个入门程序(学习总结)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 提示 以下是本篇文章正文内容 下面案例可供参考 一 Spring框架的概述 1 1 1 Spring是什么 Spring是分层的 Java SE EE应用full stack
  • CHIP-2020 中文医学文本实体关系抽取

    来源 这里 这个项目的本质是 医学文本的实体关系联合抽取问题 既要解决命名实体识别 又要解决关系分类问题 使用RoFormerV2模型作为预训练模型 GPLinker作为下游模型 在Embedding层添加FGM对抗训练增加模型性能 一 数
  • 【Go Module系列教程】手把手教你,如何使用Go Module

    Go Module系列教程 手把手教你如何使用Go Module 请先看我 看了网上的好多中文博客 一直都没有看懂 这个Go Module 到底如何使用 无奈 只能去看看官方的教程是怎么样的了 本文结合 官方文档 和 我自己的实践 根据官方
  • 【MySQL】什么事MySQL的回表?

    1 概述 在MySQL数据库中 当使用非聚簇索引 如B树索引 进行查询时 如果需要获取查询结果行的其他列数据时 就可能发生回表 Look up 操作 回表是指当使用索引进行查询时 首先根据索引定位到对应的行 然后需要再次通过行的物理位置进行
  • OSQL 命令行工具

    1 什么是 Osql osql 工具是一个 Microsoft Windows 32 命令提示符工具 您可以使用它运行 Transact SQL 语句和脚本文件 osql 工具使用 ODBC 数据库应用程序编程接口 API 与服务器通讯 在
  • EulerOS常用命令参考

    最近在使用华为云的欧拉系统 发现命令手册比较难找 找了一下官方文档 有一份比较详细的在eSignt手册下 如下地址 需要请自行跳转 参考如下文档 EulerOS常用命令参考 eSight 20 1 维护指南 12 华为
  • 软件工程—白盒测试习题答案

    一 问题描述 为以下程序设计满足指定覆盖准则的测试用例 测试用例数量应尽可能少 其中 判定1 x gt 3 z lt 10 的真分支为b 假分支为c 判定2 x 4 y gt 5 的真分支为d 假分支为e 条件1 x gt 3 的两种取值由
  • 最近邻插值、双线性插值

    1 最近邻插值 越是简单的模型越适合用来举例子 我们就举个简单的图像 3X3 的256级灰度图 也就是高为3个象素 宽也是3个象素的图像 每个象素的取值可以是 0 255 代表该像素的亮度 255代表最亮 也就是白色 0代表最暗 即黑色 假
  • html input ng model,AngularJS ng-model用法及代码示例

    ngModel是绑定输入 选择和文本区域 并将所需的用户值存储在变量中的指令 我们可以在需要该值时使用该变量 在验证过程中也以某种形式使用它 我们可以将ngModel用于 输入文本 复选框 无线电 数 电子邮件 网址 日期 datetime
  • 人工智能研究的新前线:生成式对抗网络

    林懿伦 戴星原 李力 王晓 王飞跃 来源 科学网 摘要 生成式对抗网络 Generative adversarial networks GAN 是当前人工智能学界最为重要的研究热点之一 其突出的生成能力不仅可用于生成各类图像和自然语言数据
  • iptables 实现域名过滤

    1 需求 过滤指定的域名 网站 如www baidu com www bilibili com 2 实现方案 方案1 字符串过滤 iptables A FOWARD m string algo kmp string bilibili com
  • Dynamics 365 CRM Online 使用Ribbon Workbench 2016在view或form上添加按钮并实现CURD

    目标 Dynamics 365 CRM Online 使用Ribbon Workbench 2016在view或form上方添加按钮并根据View中所选中的记录实现CURD 内容步骤 1 安装Ribbon workbench 2016 可参
  • 『Asp.Net 组件』Asp.Net 服务器组件 内嵌CSS:将CSS封装到程序集中

    代码 using System using System Web using System Web UI using System Web UI HtmlControls using System Web UI WebControls na
  • ubuntu执行apt-get install出现E: Unable to locate package 问题

    报错原因 就是没找到你要安装的那个软件 解决方法 1 检查你要安装的软件名中 是不是吧英文的 写成了中文的 2 所要安装的那个软件已经不存在了 极有可能是改名了 所以你需要执行apt cache search 关键字 查找你所要安装的这类软
  • W800系列

    目录 续前文 调试前配置 下载调试 增加一个新的demo 目前存在的问题 待解决 win11系统提示调试错误 驱动问题解决步骤 供复现及参考分析用 调试仿真错误 T HeadDebugServer运行截图 续前文 W800系列 ST LIN
  • 用例的一些知识

    一 用例执行 说明 执行结果与用例的期望结果不一致 含义 为缺陷 提示 用例结果不通过为缺陷 需要进行缺陷管理 二 缺陷 01定义 软件中存在的各种问题 都为缺陷 简称bug 02缺陷标准 少功能 功能错误 多功能 缺少隐形功能 易用性 软
  • Android NDK 开发:实战案例

    0 前言 如果只学理论 不做实践 不踩踩坑 一般很难发现真正实践项目中的问题的 也比较难以加深对技术的理解 所以延续上篇 JNI 的实战Android NDK开发 JNI实战篇 这篇主要是一些 NDK 小项目的练习 由于这些项目网上都有 d
  • CGAL---点云处理

    CGAL是一款几何处理库 但是介绍其在点云中处理的资料比较少 现介绍一个专门介绍CGAL在点云数据中处理的网站 比包括常见的点云数据处理 功能包括 1 聚类 欧式聚类 2 配准 ICP 3 简化 格网 4 平滑 5 法向量估算 6 特征估算
  • C++ static的作用

    1 什么是static static 是C 中很常用的修饰符 它被用来控制变量的存储方式和可见性 2 为什么要引入static 函数内部定义的变量 在程序执行到它的定义处时 编译器为它在栈上分配空间 大家知道 函数在栈上分配的空间在此函数执
  • 鱼眼去锯齿

    include