#include <iostream> // 引入标准输入输出流库
#include "opencv2/objdetect.hpp" // 引入OpenCV物体检测库
#include "opencv2/imgproc.hpp" // 引入OpenCV图像处理库
#include "opencv2/highgui.hpp" // 引入OpenCV高层GUI库
using namespace cv; // 使用OpenCV命名空间
using namespace std; // 使用标准库命名空间
// 预定义一些颜色常量供后续使用
static const Scalar greenColor(0, 255, 0); // 绿色
static const Scalar redColor(0, 0, 255); // 红色
static const Scalar yellowColor(0, 255, 255); // 黄色
// 生成随机颜色的函数
static Scalar randColor()
{
RNG &rng = theRNG(); // 获取随机数发生器的引用
return Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); // 生成随机颜色
}
//==============================================================================
// TheApp结构体,其中封装了应用程序的主要逻辑
struct TheApp
{
Ptr<barcode::BarcodeDetector> bardet; // 指向条码检测器的智能指针
//! [output]
vector<Point> corners; // 存储检测到的条码的角点
vector<string> decode_info; // 存储条码的解码信息
vector<string> decode_type; // 存储条码的类型
//! [output]
bool detectOnly; // 标记是否只进行检测而不解码
// 清理函数,用于清除存储结果的vector
void cleanup()
{
corners.clear();
decode_info.clear();
decode_type.clear();
}
// 返回当前模式对应的字符串
inline string modeString() const
{
return detectOnly ? "<detect>" : "<detectAndDecode>";
}
【opencv】示例-barcode.cpp 条形码检测和解码
最新推荐文章于 2025-03-19 13:11:59 发布