From debf3e2eab3fc0965aaad6839ba71183a6bf90ef Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 30 Oct 2023 15:29:03 +0800 Subject: [PATCH 1/8] 11 --- 1.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 1.txt diff --git a/1.txt b/1.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/1.txt @@ -0,0 +1 @@ +1 From b4f37273f20fa427a574408b9e409f3ae1b457d3 Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 6 Nov 2023 21:01:50 +0800 Subject: [PATCH 2/8] s --- 1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.txt b/1.txt index d00491f..de4ea8f 100644 --- a/1.txt +++ b/1.txt @@ -1 +1 @@ -1 +cd1 From 96915c4f22caf1ced49ff437d8c88c27feb5c06b Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 27 Nov 2023 20:15:40 +0800 Subject: [PATCH 3/8] 23 --- src/1.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/1.txt diff --git a/src/1.txt b/src/1.txt new file mode 100644 index 0000000..cf8ab34 --- /dev/null +++ b/src/1.txt @@ -0,0 +1 @@ +dwdw \ No newline at end of file From 5d2a15ac0008f3231e0d565a9b3310907796725b Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 27 Nov 2023 20:16:02 +0800 Subject: [PATCH 4/8] 22 --- src/2.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/2.txt diff --git a/src/2.txt b/src/2.txt new file mode 100644 index 0000000..cf8ab34 --- /dev/null +++ b/src/2.txt @@ -0,0 +1 @@ +dwdw \ No newline at end of file From d42e6086dcf170d9a1c21b7e037f43a22560484b Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 27 Nov 2023 20:19:54 +0800 Subject: [PATCH 5/8] 2 --- src/3.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/3.txt diff --git a/src/3.txt b/src/3.txt new file mode 100644 index 0000000..cf8ab34 --- /dev/null +++ b/src/3.txt @@ -0,0 +1 @@ +dwdw \ No newline at end of file From e1779670977fde5fb6c03ad7cd69fe4018d91064 Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Sun, 3 Dec 2023 23:50:31 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/src/core/chars_recognise.cpp | 40 ++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/src/core/chars_recognise.cpp b/src/src/core/chars_recognise.cpp index d101fd3..26831a9 100644 --- a/src/src/core/chars_recognise.cpp +++ b/src/src/core/chars_recognise.cpp @@ -6,29 +6,43 @@ namespace easypr { CCharsRecognise::CCharsRecognise() { m_charsSegment = new CCharsSegment(); } +//定义了CCharsRecognise类的构造函数,创建一个新的CCharsSegment类的实例,并将其地址赋值给成员变量m_charsSegment CCharsRecognise::~CCharsRecognise() { SAFE_RELEASE(m_charsSegment); } +//定义了CCharsRecognise类的析构函数, +//调用了SAFE_RELEASE宏来释放(即删除并置空)m_charsSegment指针指向的CCharsSegment对象 int CCharsRecognise::charsRecognise(Mat plate, std::string& plateLicense) { + //车牌字符识别函数,接收两个参数,一个是Mat类型的plate,它是需要进行识别的车牌图像; + //另一个是std::string&类型的plateLicense,它是一个引用,用于存储识别出来的车牌号码。 std::vector matChars; + //matChars,用于存储经过字符分割后的单个字符图像。 int result = m_charsSegment->charsSegment(plate, matChars); + //调用m_charsSegment对象的charsSegment函数进行字符分割, + //将分割后的字符存储在matChars中。charsSegment函数的返回值存储在result变量中。 if (result == 0) { + //result = 0则表示字符分割成功,接着进行车牌号码的识别 int num = matChars.size(); for (int j = 0; j < num; j++) { Mat charMat = matChars.at(j); + //循环遍历matChars中的每个字符图像 bool isChinses = false; float maxVal = 0; if (j == 0) { bool judge = true; isChinses = true; + //第一个字符,则认为是中文汉字 auto character = CharsIdentify::instance()->identifyChinese(charMat, maxVal, judge); plateLicense.append(character.second); + //调用CharsIdentify::instance()->identifyChinese函数进行识别,并将识别结果追加到plateLicense中 } else { isChinses = false; + //如果不是第一个字符,则认为不是中文汉字, auto character = CharsIdentify::instance()->identify(charMat, isChinses); plateLicense.append(character.second); + //调用CharsIdentify::instance()->identify函数进行识别,并将识别结果追加到plateLicense中。 } } @@ -36,20 +50,27 @@ int CCharsRecognise::charsRecognise(Mat plate, std::string& plateLicense) { if (plateLicense.size() < 7) { return -1; } + // 检查plateLicense的长度是否小于7,如果小于7,则返回 - 1,表示车牌号码识别失败。否则,返回result,表示车牌号码识别成功。 return result; } int CCharsRecognise::charsRecognise(CPlate& plate, std::string& plateLicense) { +//同样是用来识别车牌的函数,数接收两个参数,一个是CPlate&类型的plate,它是需要进行识别的车牌对象; +// 另一个是std::string&类型的plateLicense,它是一个引用,用于存储识别出来的车牌号码 std::vector matChars; std::vector grayChars; + //matChars用于存储经过字符分割后的单个字符图像,grayChars用于存储灰度图像。 Mat plateMat = plate.getPlateMat(); + //调用plate.getPlateMat()获取车牌图像,并将其存储在plateMat中。 if (0) writeTempImage(plateMat, "plateMat/plate"); Color color; if (plate.getPlateLocateType() == CMSER) { color = plate.getPlateColor(); } + //选择不同的方式来获取车牌颜色。如果车牌定位类型为CMSER,则直接使用plate.getPlateColor()获取车牌颜色; + //否则,从车牌图像中截取一部分区域,并调用getPlateType()函数获取车牌类型。 else { int w = plateMat.cols; int h = plateMat.rows; @@ -58,35 +79,42 @@ int CCharsRecognise::charsRecognise(CPlate& plate, std::string& plateLicense) { } int result = m_charsSegment->charsSegmentUsingOSTU(plateMat, matChars, grayChars, color); - + //调用charsSegmentUsingOSTU方法对输入的车牌图像进行字符分割 if (result == 0) { int num = matChars.size(); for (int j = 0; j < num; j++) { + //for循环遍历每一个字符图像 Mat charMat = matChars.at(j); Mat grayChar = grayChars.at(j); + //通过matChars.at(j)和grayChars.at(j)获取第j个字符图像和其灰度图像 if (color != Color::BLUE) grayChar = 255 - grayChar; - + //如果车牌颜色不是蓝色,则对灰度图像进行操作 bool isChinses = false; std::pair character; float maxVal; if (0 == j) { isChinses = true; bool judge = true; + //设定第一个字符为中文字符 character = CharsIdentify::instance()->identifyChineseGray(grayChar, maxVal, judge); plateLicense.append(character.second); - + //使用CharsIdentify::instance()->identifyChineseGray方法识别灰度图像grayChar, + // 并将结果存储在character对中。 // set plate chinese mat and str plate.setChineseMat(grayChar); plate.setChineseKey(character.first); + //设置车牌的中文图像和字符串。 if (0) writeTempImage(grayChar, "char_data/" + character.first + "/chars_"); } else if (1 == j) { isChinses = false; bool isAbc = true; character = CharsIdentify::instance()->identify(charMat, isChinses, isAbc); + //使用CharsIdentify::instance()->identify方法识别字符图像charMat plateLicense.append(character.second); + //将识别的第二个字符串添加到plateLicense } else { isChinses = false; @@ -96,17 +124,21 @@ int CCharsRecognise::charsRecognise(CPlate& plate, std::string& plateLicense) { } CCharacter charResult; + //创建CCharacter对象并设置其图像和字符串。 charResult.setCharacterMat(charMat); charResult.setCharacterGrayMat(grayChar); if (isChinses) charResult.setCharacterStr(character.first); else charResult.setCharacterStr(character.second); - + + //如果isChinses为true,则使用识别的第一个字符串作为字符的字符串;否则,使用识别的第二个字符串。 plate.addReutCharacter(charResult); + //字符结果添加到车牌对象中。 } if (plateLicense.size() < 7) { return -1; + //最后,如果识别的字符数量少于7个,函数返回 - 1;否则返回result } } From f652ce2b3324491487b2fe7e4e45c7864f73f810 Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 4 Dec 2023 00:01:58 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/1.txt | 1 - src/2.txt | 1 - src/3.txt | 1 - 3 files changed, 3 deletions(-) delete mode 100644 src/1.txt delete mode 100644 src/2.txt delete mode 100644 src/3.txt diff --git a/src/1.txt b/src/1.txt deleted file mode 100644 index cf8ab34..0000000 --- a/src/1.txt +++ /dev/null @@ -1 +0,0 @@ -dwdw \ No newline at end of file diff --git a/src/2.txt b/src/2.txt deleted file mode 100644 index cf8ab34..0000000 --- a/src/2.txt +++ /dev/null @@ -1 +0,0 @@ -dwdw \ No newline at end of file diff --git a/src/3.txt b/src/3.txt deleted file mode 100644 index cf8ab34..0000000 --- a/src/3.txt +++ /dev/null @@ -1 +0,0 @@ -dwdw \ No newline at end of file From a4352299fc311a2c211af77b19de13570dfd5b30 Mon Sep 17 00:00:00 2001 From: gewenlin <3074038122@qq.com> Date: Mon, 4 Dec 2023 07:11:38 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.txt | 1 - 1 file changed, 1 deletion(-) delete mode 100644 1.txt diff --git a/1.txt b/1.txt deleted file mode 100644 index de4ea8f..0000000 --- a/1.txt +++ /dev/null @@ -1 +0,0 @@ -cd1