请问,VC++ 怎么识别屏幕上扫描下来的数字,能给个思路或相关函数吗,万分感谢
发布网友
发布时间:2022-05-02 23:34
我来回答
共3个回答
热心网友
时间:2023-10-09 22:26
我不是做VC的 WIN32的函数不是太懂,这类资料应该还是挺多的。关于放大。缩小可以这么做。
放大,假设要放大一倍,一行的值是 0 1 0 0 0 0 1 0 放大之后应该就是
0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 很简单把 要是扩大1/3那么就要各3个加一个临接的点的值
缩小更不用说了0 1 0 0 0 0 1 0
就是 1 0 0 1。
这类算法很多 可以参考 ,也可以用WIN32的API进行图形放大缩小。
还有 数字判断的问题(2 3 6 8 9 0 )
2只有两个顶点
6有一个顶点,和一个连接点。
8有一个连接点。
根据这种规律去想办法去比较
热心网友
时间:2023-10-09 22:27
是不是类似于金山词霸的屏幕取词?你搜索“C++ 屏幕取词”应该就有了,大概是对词条的区域绘制一个矩形,然后系统会发WM_PRINT,和用TextOut重新把字绘制上去,你就在拦截这个API函数做手脚...
热心网友
时间:2023-10-09 22:27
用DirectShow写的。
配置好相关lib,编译这个cpp文件就可以运行,当然AVI文件路径自己相应设置。
#include "stdio.h"
#include "dshow.h"
void main()
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;
// 初始化COM 库
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("ERROR - Could not initialize COM library");
return;
}
// 建立过滤器图表管理器
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **)&pGraph);
if (FAILED(hr))
{
printf("ERROR - Could not create the Filter Graph Manager.");
return;
}
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
// 建立过滤器图表
hr = pGraph->RenderFile(L"D:\\我的文档\\我的视频\\游戏\\魔兽世界\\燃烧的远征中文开场动画.avi", NULL);
if (SUCCEEDED(hr))
{
// 播放
hr = pControl->Run();
if (SUCCEEDED(hr))
{
// 等待播放结束
long evCode;
pEvent->WaitForCompletion(INFINITE, &evCode);
}
}
pControl->Release();
pEvent->Release();
pGraph->Release();
CoUninitialize();
}