张洋 1 day ago
parent
commit
ba2b9387d9

+ 9 - 3
zhipuzi_pos_windows/ai/YoloFeatureManager.cpp

@@ -10,9 +10,15 @@
 
 #include "../tool/debuglog.h"
 
-YoloFeatureManager::YoloFeatureManager(const std::string& modelPath, const std::string& classesPath)
-	: inputWidth(448), inputHeight(448)
+YoloFeatureManager::YoloFeatureManager()
 {
+}
+
+void YoloFeatureManager::loadModel(const std::string & modelPath, const std::string & classesPath)
+{
+	inputWidth = 448;
+	inputHeight = 448;
+
 	net = cv::dnn::readNetFromONNX(modelPath);
 	loadClassNames(classesPath);
 
@@ -20,7 +26,7 @@ YoloFeatureManager::YoloFeatureManager(const std::string& modelPath, const std::
 	NMS_THRESHOLD = 0.4f;  // 可以根据需要调整NMS阈值
 }
 
-void YoloFeatureManager::loadClassNames(const std::string& file)
+void YoloFeatureManager::loadClassNames(const std::string & file)
 {
 	std::ifstream ifs(file);
 	std::string line;

+ 4 - 3
zhipuzi_pos_windows/ai/YoloFeatureManager.h

@@ -17,10 +17,10 @@ private:
 	float NMS_THRESHOLD;
 
 public:
-	YoloFeatureManager(const std::string & modelPath, const std::string & classesPath);
+	YoloFeatureManager();
 	~YoloFeatureManager() = default;
 
-
+	void loadModel(const std::string & modelPath, const std::string & classesPath);
 	void loadClassNames(const std::string & file);
 
 	// 提取特征
@@ -33,6 +33,7 @@ public:
 	void YoloFeatureManager::drawDetection(cv::Mat& img, const std::vector<cv::Rect>& boxes, const std::vector<int>& classIds,
 		const std::vector<float>& confidences, const std::vector<std::string>& classNames);
 
+	//根据摄像头读取的帧,识别出对应类别的name(英文的)
 	std::string Class(cv::Mat& image);
 
 private:
@@ -52,7 +53,7 @@ private:
 	}
 
 	//	获取类别名称
-	std::string getClassName(int classId) const
+	std::string getClassName(std::size_t classId) const
 	{
 		if (classId >= 0 && classId < classNames.size())
 		{

+ 2 - 1
zhipuzi_pos_windows/ai/test.cpp

@@ -43,7 +43,8 @@ int AITest()
 
 		// 初始化特征提取器
 		std::cout << "正在初始化YOLO2026特征提取器..." << std::endl;
-		YoloFeatureManager extractor(modelPath, classesPath);
+		YoloFeatureManager extractor;
+		extractor.loadModel(modelPath, classesPath);
 
 		// 获取图库中的所有图片
 		std::cout << "正在扫描图库中的图片..." << std::endl;

+ 4 - 0
zhipuzi_pos_windows/page/CDiandanPageUI.h

@@ -12,6 +12,8 @@
 
 #include "../wnd/CModalWnd.h"
 
+#include "../ai/YoloFeatureManager.h"
+
 class CDiandanPageUI : public CBasePageUI
 {
 public:
@@ -210,6 +212,8 @@ private:
 
 	bool m_is_ai_shibie = false;
 
+	YoloFeatureManager m_yoloFeatureManager;
+
 	//ÌײÍÉÌÆ·ÊýÁ¿
 	int m_nFoodpackageNum;
 

+ 2 - 2
zhipuzi_pos_windows/worker/CVideoCapture.cpp

@@ -66,8 +66,8 @@ void CVideoCapture::HandleVideoCapture()
 
 		//什么都不用做,只需要把摄像头读取的帧放在成员变量里就行,后续其他地方需要用到摄像头数据的时候直接从成员变量里取就行了
         // 显示摄像头帧(可选)
-        cv::imshow("Camera", m_frame);
-		if (cv::waitKey(30) >= 0) break; // 按任意键退出
+        // cv::imshow("Camera", m_frame);
+		// if (cv::waitKey(30) >= 0) break; // 按任意键退出
     }
 
     // ====================== 资源释放 ======================