首页 > 系统相关 >用C++调用Windows.Media.Ocr接口实现图片的OCR识别

用C++调用Windows.Media.Ocr接口实现图片的OCR识别

时间:2023-12-15 11:35:06浏览次数:36  
标签:include Windows Media namespace softwareBitmap winrt using OCR

这个接口最开始是给UWP程序用的。C++里需要用C++/WinRT方式调用。默认参数的识别率也不是很高的样子。只支持Win10+。

#include <winrt/Windows.Storage.h>
#include <winrt/Windows.Storage.Streams.h>
#include <winrt/Windows.Graphics.Imaging.h>
#include <winrt/Windows.Media.Ocr.h>
#include <winrt/Windows.Globalization.h>
#include <winrt/Windows.Foundation.h>
#include <iostream>
#include <locale.h>

using namespace winrt;
using namespace Windows::Storage;
using namespace Windows::Storage::Streams;
using namespace Windows::Graphics::Imaging;
using namespace Windows::Media::Ocr;
using namespace Windows::Globalization;
using namespace winrt::Windows::Foundation;

void InitializeWinRT()
{
    init_apartment();
}

SoftwareBitmap LoadImage(const winrt::hstring& imagePath)
{
    StorageFile imageFile = StorageFile::GetFileFromPathAsync(imagePath).get();
    IRandomAccessStream fileStream = imageFile.OpenAsync(FileAccessMode::Read).get();
    BitmapDecoder decoder = BitmapDecoder::CreateAsync(fileStream).get();
    SoftwareBitmap softwareBitmap = decoder.GetSoftwareBitmapAsync().get();

    return softwareBitmap;
}

winrt::hstring PerformOcr(const SoftwareBitmap& softwareBitmap)
{
    winrt::hstring languageTag = L"zh-CN";
    Windows::Globalization::Language lang(languageTag);
    OcrEngine ocrEngine = OcrEngine::TryCreateFromLanguage(lang);
    OcrResult ocrResult = ocrEngine.RecognizeAsync(softwareBitmap).get();

    return ocrResult.Text();
}

int main()
{
    _wsetlocale(LC_ALL, L"zh-CN");

    InitializeWinRT();

    winrt::hstring imagePath = L"c:\\test.jpg";

    SoftwareBitmap softwareBitmap = LoadImage(imagePath);
    winrt::hstring resultText = PerformOcr(softwareBitmap);

    std::wcout << L"识别结果:" << resultText.c_str() << std::endl;

    return 0;
}

  

标签:include,Windows,Media,namespace,softwareBitmap,winrt,using,OCR
From: https://www.cnblogs.com/z16166/p/17903030.html

相关文章

  • Windows用户、组
    查看所有账户netuser查看某个账户信息netuser用户名查看某个用户的sidwhoami/user查看所有用户的sidwmicuseraccountgetname,sid查看当前操作系统存在的用户界面操作此电脑→鼠标右击→管理→计算机管理→系统工具→本地用户和组→用户命令操作......
  • python虚拟环境(windows)
    venv虚拟环境,是Python用来创建和管理虚拟环境的模块,该模块供你用来存放你的各种python第三方模块,模块里的环境和本机是完全分开的,也就是说你在venv下通过pip安装的python第三方模块是不会影响到你本机的环境的。具体操作如下:1.先安装virtualenvpipinstallvirtualenv 2.进......
  • Windows上的c/c++编译工具
    Windows上的编译工具有很多种,以下是一些常见的选择:VisualStudio:这是微软开发的一款IDE,支持多种编程语言,包括C++。它提供了丰富的功能,如代码编译、调试、版本控制等。VisualStudio还包含一些强大的工具,如代码智能感知和代码重构工具,可以帮助开发人员提高开发效率。   有......
  • windows安装配置lua
    直接exe安装方式:1.在github下载exehttps://github.com/rjpcomputing/luaforwindows/releases/ 2.直接安装 3.使用命令行 lua.exe终端可以进入,也可以直接cmd输入lua进入参考:https://cloud.tencent.com/developer/article/21686484.使用脚本创建脚本: 运行:  ......
  • linux下,需要删除windows中^M
    linux下,如果需要在vim中查看^M,需要使用如下命令:在Vim的命令模式中输入:e++ff=unix%有时候,我们在Linux中打开曾在Win中编辑过的文件时,会在行尾看到^M字符。虽然,这并不影响什么,但心里面还是有点不痛快。如果想要删除这些^M字符,可以使用Vim来轻松搞定它。在Vi......
  • Windows10关闭自动更新的好方法
               原文章链接https://baijiahao.baidu.com/s?id=1776341785811933929&wfr=spider&for=pc......
  • windows安装tensorflow-gpu / CUDA / cuDNN
    最终安装内容:windows10+3060显卡+tensorflow-gpu2.10.0+CUDA11.2+cuDNN8.1 1.命令行输入nvidia-smi,查看显卡对应的cuda版本。如下图,CUDAVersion为12.1,则安装的CUDA版本不能高于12.1。 2.Nvidia官网查看tensorflow-gpu和CUDA的版本对应关系。注意:语言一定要切......
  • 虚拟机安装Windows7 X64位教程以及解决VMTOOLS无法安装问题
    相关镜像文件的下载首先我们需要下载一个Windows7的镜像文件这里推荐迅雷下载,速度更快一点ed2k://|file|cn_windows_7_professional_x64_dvd_x15-65791.iso|3341268992|3474800521d169fbf3f5e527cd835156|h=TIYH37L3PBVMNCLT2EX5CSSEGXY6M47W|/虚拟机安装首页->新建虚拟机以上就是......
  • 记_用Windows自带Hyper做CentOS连接的小问题
    今天刚接触CentOS服务器,在连接的时候遇到了一点小问题。查了一些连接方式,好多介绍要下单独的工具。直到我看到一个似曾相识的词<Hyper>,这个好像在哪里见过。又经过一番查找,原来这玩意Windows自带就有,既然有,那就直接用咯~~。然后就不出意外的出问题了。(下图已脱敏)大概理解提......
  • 0x07.常用windows命令、搭建网站、状态码
    常用windows命令cmdwtcal 计算器control 控制面板winver 查看版本services.msc服务mstsc 远程桌面regedit 注册表ncpa.cpl 网络连接explorer 此电脑netplwiz 用户账户inetmgr IIS控制台判断windows-server版本IIS版本......