WIC 图像处理初体验——读取像素的值

先放上运行结果:

可以发现红绿蓝是从后往前的。

必须以C++方式编译代码!

// 参考资料:https://learn.microsoft.com/zh-cn/windows/win32/wic/-wic-lh
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <wincodec.h>

int main(void)
{
    CoInitialize(nullptr);

    IWICImagingFactory* fac;
    CoCreateInstance(CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&fac));
    
    IWICBitmapDecoder* dec;
    fac->CreateDecoderFromFilename(L"test.bmp", nullptr, GENERIC_READ, WICDecodeMetadataCacheOnDemand, &dec);
    
    IWICBitmapFrameDecode* fram;
    dec->GetFrame(0, &fram);
    
    IWICBitmap* bmp;
    fac->CreateBitmapFromSource(fram, WICBitmapCacheOnDemand, &bmp);
    UINT w, h;
    bmp->GetSize(&w, &h);
    printf("宽 %u 高 %u\n", w, h);

    IWICBitmapLock* lck;
    WICRect rc = { .X = 0, .Y = 0, .Width = (INT)w, .Height = (INT)h };
    bmp->Lock(nullptr, WICBitmapLockRead, &lck);

    UINT stride;
    lck->GetStride(&stride);
    printf("步长 %u\n", stride);
    
    UINT bufsiz;
    BYTE* v;
    lck->GetDataPointer(&bufsiz, &v);
    puts("每个像素的 RGB 值:");
    for (UINT i = 0; i < h; i++) {
        printf("第 %u 行\n", i);
        BYTE* row = v + (UINT64)i * stride;
        for (UINT j = 0; j < w; j++) {
            BYTE* p = row + 3 * j;
            printf("%-4hhu%-4hhu%-4hhu\n", p[0], p[1], p[2]);
        }
        putchar('\n');
    }

    lck->Release();
    bmp->Release();
    fram->Release();
    dec->Release();
    fac->Release();

    CoUninitialize();
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go语言的诞生背景

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

Centos Stream9 和Centos Stream10的下载网址

Index of /https://mirror.stream.centos.org/

在检索增强生成 (RAG) 管道中使用 MinIO Weaviate 和 Langchain 优化

作为 MinIO 专注于 AI 集成的开发人员&#xff0c;我一直在探索如何将我们的工具无缝集成到现代 AI 架构中&#xff0c;以提高效率和可扩展性。在本文中&#xff0c;我们将深入探讨使用 LangChain 将 MinIO 与检索增强生成 &#xff08;RAG&#xff09; 管道和 Weaviate 向量存…

Java赋值运算符

Java赋值运算符分为以下&#xff1a; 符号 作用 说明 赋值 int a 10,把10赋值给变量a 加后赋值 ab,将ab的值赋值给变量a - 减后赋值 a-b,将a-b的值赋值给变量a* 乘后赋值 a*b,将a*b的值赋值给变量a / 除后赋值 a/b,将a/b的值赋值给变量a % 取余赋值 a%b,将a%b的值赋值给变量…

软银CEO孙正义:10年内将出现比人类聪明1万倍的人工智能|TodayAI

2024年6月20日&#xff0c;软银集团公司&#xff08;SoftBank&#xff09;董事长兼首席执行官孙正义在日本东京举行的公司年度股东大会上发表讲话&#xff0c;表示比人类聪明1万倍的人工智能将在10年内出现。这是他近年来一次罕见的公开露面&#xff0c;在会上他质疑了自己的人…

GeoJson 地图地理信息数据获取

效果图&#xff1a; 获取渠道&#xff1a; 通过阿里数据可视化平台获取通过Vector Maps获取通过geojson来获取 1、通过阿里数据可视化平台获取 2、通过Vector Maps获取 3、通过geojson获取

找不到xinput1_3.dll如何修复?总结几种靠谱的修复方法

在数字时代&#xff0c;软件问题几乎是每个电脑用户都会遇到的难题。最近&#xff0c;我也遇到了一个令人头疼的问题——xinput1_3.dll文件丢失。这个问题导致我无法正常运行一些游戏&#xff0c;十分影响我的娱乐体验。通过这次修复经历&#xff0c;我不仅解决了问题&#xff…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验7 虚拟局域网VLAN

一、实验目的 1.学习如何划分VLAN&#xff1b; 2.验证划分VLAN的作用&#xff1b; 3.学习如何用命令行创建VLAN&#xff0c;将端口划分到VLAN&#xff0c;设置端口类型。 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&am…

PythonWeb前端

摘要 学校的一门选修课&#xff0c;PythonWeb开发从入门到实践&#xff0c;用到的技术有Python,Flask,MySQL,前端三件套等&#xff0c;但因为是选修课&#xff0c;所以都只涉及到了一点点 Web前端基础 1.Web工作原理 概念&#xff1a; Web&#xff0c;万维网&#xff0c;一…

【第25章】Vue实战篇之用户登出

文章目录 前言一、后端代码二、前端代码1.接口调用2.界面代码3.事件代码 三、效果总结 前言 这里来演示用户登出。 一、后端代码 /*** 登出* param token token* return Result*/RequestMapping("logout")public Result logout(RequestHeader("Authorization&…

nginx启动之后任务管理器里面没有nginx进程

原因1&#xff1a;确保你的nginx文件夹里面只包含英文路径&#xff01;绝对不能有中文&#xff01; 原因2&#xff1a; 到conf\nginx.conf里面查看端口和IP地址是否正确设置&#xff0c;ip地址有无正确输入

疯狂刷题python版 | 使用PySide6自制刷题软件【源码+解析】

疯狂刷题python版 | 使用PySide6自制刷题软件【源码解析】 一、前言二、思考三、软件设计四、软件实现&#xff08;一&#xff09;使用QWebEngineView控件通过JavaScript代码和chrome内核进行数据交互和逻辑控制&#xff08;二&#xff09;用户分别通过浏览器 GUI和PySide6 GUI…

2024全国高校名单发布,电子版下载!

今天&#xff0c;教育部网站发布了《全国高等学校名单》。截至2024年6月20日&#xff0c;全国高等学校共计3117所&#xff0c;其中&#xff1a;普通高等学校2868所&#xff0c;含本科学校1308所、高职&#xff08;专科&#xff09;学校1560所&#xff1b;成人高等学校249所。本…

qt 简单实验 读取json格式的配置文件

1.概要 2.代码 //#include "mainwindow.h"#include <QApplication> #include <QFile> #include <QJsonDocument> #include <QJsonObject> #include <QDebug> //读取json数据的配置文件QJsonObject readJsonConfigFile(const QString …

[图解]建模相关的基础知识-15

1 00:00:01,030 --> 00:00:05,820 接下来&#xff0c;我们就开始讲解的知识点 2 00:00:05,830 --> 00:00:11,810 就是范式知识点 3 00:00:12,130 --> 00:00:17,490 关系这个理论里面&#xff0c;随着历史的发展 4 00:00:17,700 --> 00:00:21,280 它发展出很多的…

开源与在线 M3U8 Downloader 项目介绍及使用指南

M3U8 是一种用于播放列表格式的文件类型&#xff0c;广泛应用于流媒体服务中&#xff0c;特别是 HLS&#xff08;HTTP Live Streaming&#xff09;协议。它包含了一系列的 TS&#xff08;Transport Stream&#xff09;视频片段地址&#xff0c;使得视频能够分段加载&#xff0c…

【学习笔记】CSS

CSS 1、 基础篇 1.1、选择器 1.2、长度单位 1.3、CSS2 常用属性 1.4、盒模型 1.5、浮动 1.6、定位 position2、 CSS3 2.1、新增长度单位 2.2、新增颜色表示 2.3、新增选择器 2.4、新增盒子属性 2.5、新增背景属性 …

Apriori 处理ALLElectronics事务数据

通过Apriori算法挖掘以下事务集合的频繁项集&#xff1a; 流程图 代码 # 导入必要的库 from itertools import combinations# 定义Apriori算法函数 def apriori(transactions, min_support, min_confidence):# 遍历数据&#xff0c;统计每个项的支持度 item_support {}for tr…

触想工业一体机在智慧医疗智能采血管理系统中的应用

一、行业发展前景 作为医院重点科室之一&#xff0c;传统的检验科采血环节存在诸多痛点&#xff0c;特别在备管阶段&#xff0c;大量患者信息的核对、试管条码打印、选管、贴标等繁琐步骤均依赖人工操作&#xff0c;工作强度大、效率低&#xff0c;易出错。 随着智慧医院建设的…

解锁PDF处理新境界:轻松调整字体,让你的文档焕然一新!

数字化时代&#xff0c;PDF文件已经成为我们日常办公和学习中不可或缺的一部分。它们为我们提供了方便的阅读体验&#xff0c;同时也保证了文档内容的完整性和格式的统一性。然而&#xff0c;有时候我们可能会遇到一个问题&#xff1a;如何轻松调整PDF文件中的字体&#xff0c;…