//现在我抛砖引玉一下,用百度OCR来识别文字中的文本。 首先要去注册一个百度的帐号,这里不说了,我想大家都会。注册帐号后到登陆后,申请相关的API KEY和secret key .这些东西我就不说了,在大家去申请好了。
// 现在说一下代码,百度OCR用C代码调用分为两步,第一步是用API KEY和secret key去申请access token。申请代码如下,大家复制一下就好了
#include "stdafx.h"
#include "json.h"
#include "reader.h"
#include "writer.h"
#include "value.h"
#include "config.h"
#include "curl.h"
#include "crypto.h"
#include "ocr.h"
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <iterator>
#include <locale> // std::wstring_convert
#include <codecvt> // std::codecvt_utf8
#include <cstdint> // std::uint_least32_t
#include "atlstr.h"
#include <windows.h>
#include "tchar.h"
#include <stdio.h>
#include <stdlib.h>
#include "base64.h"
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
string general_ocr_result;
//这个代码运行完后就在变量access_token里就是我们要申衣的access token,用这个access token就可以进行OCR的调用了。调用代码如下
static size_t OCRcallback(void *ptr, size_t size, size_t nmemb, void *stream)
{
// 获取到的body存放在ptr中,先将其转换为string格式
general_ocr_result = std::string((char *)ptr, size * nmemb);
return size * nmemb;
}
int general_ocr(std::string &json_result, const std::string &image_base64, const std::string &access_token,const std::string &general_ocr_url) {
std::string url = general_ocr_url + "?access_token=" + access_token;
CURL *curl;
CURLcode result_code;
int is_success;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); //设置问非0表示本次操作为post
curl_easy_setopt(curl, CURLOPT_URL, url.data());
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_httppost *post = NULL;
curl_httppost *last = NULL;
curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, image_base64.data(),
CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, OCRcallback);
result_code = curl_easy_perform(curl);
if (result_code != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(result_code));
is_success = 1;
return is_success;
}
json_result = general_ocr_result;
curl_easy_cleanup(curl);
is_success = 0;
}
else {
fprintf(stderr, "curl_easy_init() failed.");
is_success = 1;
}
return is_success;
}
static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
// 获取到的body存放在ptr中,先将其转换为string格式
std::string s((char *)ptr, size * nmemb);
// 开始获取json中的access token项目
Json::CharReaderBuilder b;
Json::CharReader* reader(b.newCharReader());
Json::Value root;
//reader.parse(s, root);
string err;
const char *pStart = s.c_str();
int nLen = s.length();
reader->parse(pStart, pStart + nLen, &root, &err);
std::string* access_token_result = static_cast<std::string*>(stream);
*access_token_result = root["access_token"].asString();
return size * nmemb;
}
/**
* 用以获取access_token的函数,使用时需要先在百度云控制台申请相应功能的应用,获得对应的API Key和Secret Key
* @param access_token 获取得到的access token,调用函数时需传入该参数
* @param AK 应用的API key
* @param SK 应用的Secret key
* @return 返回0代表获取access token成功,其他返回值代表获取失败
*/
int get_access_token(std::string &access_token, const std::string &access_token_url,const std::string &AK, const std::string &SK) {
CURL *curl;
CURLcode result_code;
int error_code = 0;
curl = curl_easy_init();
if (curl) {
std::string url = access_token_url + "&client_id=" + AK + "&client_secret=" + SK;
curl_easy_setopt(curl, CURLOPT_URL, url.data());
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
std::string access_token_result;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &access_token_result);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
result_code = curl_easy_perform(curl);
if (result_code != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(result_code));
return 1;
}
access_token = access_token_result;
curl_easy_cleanup(curl);
error_code = 0;
}
els�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
可以直接使用的百度文字识别源代码(车牌识别) (469个子文件)
2.bmp 53KB
1.bmp 25KB
applink.c 3KB
OpenCVConfig.cmake 16KB
OpenCVConfig.cmake 16KB
OpenCVModules-release.cmake 15KB
OpenCVModules-debug.cmake 15KB
OpenCVModules.cmake 5KB
OpenCVModules.cmake 3KB
OpenCVModules-release.cmake 2KB
OpenCVModules-debug.cmake 1KB
OCR.cpp 12KB
stdafx.cpp 294B
opencv_world300d.dll 38.24MB
opencv_world300.dll 26.36MB
opencv_ffmpeg300.dll 10.05MB
libcurl.dll 360KB
libcurl.dll 360KB
opencv_traincascade.exe 375KB
curl.exe 325KB
opencv_annotation.exe 49KB
opencv_createsamples.exe 39KB
libcurl.exp 10KB
OCR.vcxproj.filters 1KB
safestack.h 198KB
obj_mac.h 172KB
ssl.h 146KB
core_c.h 127KB
curl.h 102KB
evp.h 71KB
asn1.h 62KB
types_c.h 59KB
ec.h 55KB
x509.h 52KB
imgproc_c.h 51KB
objects.h 46KB
engine.h 44KB
typecheck-gcc.h 42KB
bn.h 40KB
x509v3.h 39KB
tls1.h 38KB
bio.h 38KB
kmeans_index.h 36KB
image_search.h 35KB
ocr.h 35KB
ts.h 34KB
asn1t.h 34KB
ssl3.h 33KB
rsa.h 29KB
x509_vfy.h 29KB
value.h 28KB
cms.h 28KB
face.h 27KB
symhacks.h 27KB
crypto.h 27KB
dist.h 27KB
ocsp.h 27KB
hierarchical_clustering_index.h 25KB
pem.h 25KB
asn1_mac.h 24KB
defs.h 22KB
des_old.h 21KB
autotuned_index.h 20KB
pkcs7.h 20KB
dso.h 20KB
kdtree_single_index.h 20KB
calib3d_c.h 20KB
kdtree_index.h 19KB
videoio_c.h 18KB
ui.h 18KB
system.h 18KB
lsh_table.h 18KB
types_c.h 17KB
err.h 16KB
dh.h 16KB
multi.h 16KB
nlp.h 15KB
lsh_index.h 15KB
result_set.h 15KB
pkcs12.h 15KB
ecdsa.h 14KB
reader.h 14KB
dsa.h 13KB
writer.h 12KB
image_classify.h 12KB
ssl2.h 12KB
des.h 12KB
tracking_c.h 11KB
conf.h 11KB
e_os2.h 11KB
index_testing.h 11KB
highgui_c.h 10KB
lhash.h 9KB
dtls1.h 9KB
cvdef.h 9KB
http.h 8KB
base.h 8KB
modes.h 8KB
utils.h 8KB
any.h 8KB
共 469 条
- 1
- 2
- 3
- 4
- 5
资源评论
- 宜视智能2019-09-03你好,我运行完没有出错但是也没有什么反应。不鸣~2019-12-04那你是怎么操作的呢
不鸣~
- 粉丝: 75
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功