以下是一个使用OpenCV库实现基本的OCR(光学字符识别)并打开USB摄像头的C++代码示例:
#include <opencv2/opencv.hpp>
#include <tesseract/baseapi.h>
int main() {
cv::VideoCapture cap(0); // 打开默认USB摄像头
if (!cap.isOpened()) {
std::cout << "无法打开摄像头" << std::endl;
return -1;
}
cv::Mat frame;
cv::namedWindow("OCR", cv::WINDOW_NORMAL);
tesseract::TessBaseAPI tess; // 创建OCR引擎
tess.Init(nullptr, "eng", tesseract::OEM_DEFAULT); // 使用英文语言包
while (true) {
cap.read(frame); // 读取摄像头帧
if (frame.empty()) {
std::cout << "无法读取帧" << std::endl;
break;
}
cv::imshow("OCR", frame);
// 转换为灰度图像进行OCR处理
cv::Mat gray;
cvtColor(frame, gray, CV_BGR2GRAY);
tess.SetImage((uchar*)gray.data, gray.cols, gray.rows, 1, gray.cols);
char* text = tess.GetUTF8Text();
std::cout << "识别结果: " << text << std::endl;
delete[] text;
if (cv::waitKey(1) == 'q') { // 按下'q'键退出循环
break;
}
}
cap.release();
cv::destroyAllWindows();
return 0;
}
请注意,运行此代码需要安装OpenCV库和Tesseract OCR库。
内容由零声教学AI助手提供,问题来源于学员提问