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

2024-06-21 22:52

本文主要是介绍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;
}

这篇关于WIC 图像处理初体验——读取像素的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082566

相关文章

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

17.用300行代码手写初体验Spring V1.0版本

1.1.课程目标 1、了解看源码最有效的方式,先猜测后验证,不要一开始就去调试代码。 2、浓缩就是精华,用 300行最简洁的代码 提炼Spring的基本设计思想。 3、掌握Spring框架的基本脉络。 1.2.内容定位 1、 具有1年以上的SpringMVC使用经验。 2、 希望深入了解Spring源码的人群,对 Spring有一个整体的宏观感受。 3、 全程手写实现SpringM

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

工作流Activiti初体验【一】

在这里记录一下我的Activiti历程:(以下示例不涉及真实业务,所有逻辑均建立在学习的基础上) bpmn图 发起任务我设置了一个权限组user1,只要是这个权限的用户都可以发起任务 分发任务我设置了一个用户组,用户组中每个用户都可以处理这步流程,只要有一个人处理这步任务,分发的流程就算结束了 分发任务这一环节还有个判断,允许任务下发和不允许任务下发 任务分发完成则来到子流程,每个被分

PHP 读取或生成大的Excel

场景,在很多情况下,需要读取Excel文件。 常用的有PHPExcel包或者使用 maatwebsite/excel 包 但是使用这个包读取或生成excel,如果excel文件过大,很容易出现超内存情况。 解决方法: 上传:要求上传者使用.csv 文件上传。然后使用php自带的 fgetcsv()函数来读取文件。http://php.net/manual/zh/function.fgetc

Java——IO流(一)-(5/8):IO流概述、字节流-FileInputStream 每次读取一个字节

IO流概述 介绍 输入输出流,用于读写数据。 I指Input,称为输入流:负责把数据读到内存中去。 O指Output,称为输出流:负责写数据出去。 IO流的应用场景 文件内容的读写永久保存应用数据复制粘贴对话通信等等 怎么学IO流 理清楚IO六点分类和体系循序渐进、深入学习每个IO流的作用和用法 IO流的分类 IO流总体来看就有四大类: 字节输入流:以内存

springboot读取properties文件的方式

前言 在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作。今天就分享四种在Springboot中获取配置文件的方式。 注:前三种测试配置文件为springboot默认的application.properties文件 #######################方式一#########################com.zyd.type3=Springboot

图像处理相关的重要期刊汇总

期刊名称 Impact factor/收录 Image and Vision Computing   (IVC) 1.474 Pattern Recognition Letters 1.303 Artificial Intelligence 3.036 Computer Aided Geometric Design 1.33 Compute

上位机图像处理和嵌入式模块部署(mcu和swd接口)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】         最近学习mcu的时候,接触了不少调试器,这里面有daplink、st-link v2、j-link v9。虽然模块的形状可能不太一样,但是硬件的连线都差不多,都是mcu上的3.3v、clk、dio和gnd四根连线。出于好奇,今天花了点时间了解了一下debug port、sw

SD卡无法读取?数据恢复全攻略!

SD卡无法读取问题描述 在日常使用电子设备时,我们有时会遇到SD卡无法读取的情况。当插入SD卡后,设备可能无法识别或访问其中的数据,这给我们带来了诸多不便。SD卡无法读取,意味着存储在卡中的重要文件、照片和视频等资料可能面临丢失的风险。 SD卡无法读取原因分析 造成SD卡无法读取的原因有多种。首先,物理损坏是一个常见的原因,包括SD卡接口的磨损、弯曲或断裂等。其次,逻辑错误也可能导致SD