拜读维拉科技关于机器人相关信息的综合整理,涵盖企业排名、产品类型及资本市场动态:一、中国十大机器人公司(综合类)优必选UBTECH)聚焦人工智能与人形机器人研发,产品覆盖教育、娱乐及服务领域,技术处于行业前沿。基于LockAI视觉识别模块:手写数字识别机器人中科院旗下企业,工业机器人全品类覆盖,是国产智能工厂解决方案的核心供应商。埃斯顿自动化国产工业机器人龙头,实现控制器、伺服系统、本体一体化自研,加速替代外资品牌。遨博机器人(AUBO)协作机器人领域领先者,主打轻量化设计,适用于3C装配、教育等柔性场景。埃夫特智能国产工业机器人上市第一股,与意大利COMAU深度合作,产品稳定性突出。二、细分领域机器人产品智能陪伴机器人Gowild公子小白:情感社交机器人,主打家庭陪伴功能。CANBOT爱乐优:专注0-12岁儿童心智发育型亲子机器人。仿真人机器人目前市场以服务型机器人为主,如家庭保姆机器人(售价10万-16万区间),但高仿真人形机器人仍处研发阶段。水下机器人工业级产品多用于深海探测、管道巡检,消费级产品尚未普及。基于LockAI视觉识别模块:手写数字识别资本市场动态机器人概念股龙头双林股份:特斯拉Optimus关节模组核心供应商,订单排至2026年。中大力德:国产减速器龙头,谐波减速器市占率30%。金力永磁:稀土永磁材料供应商,受益于机器人电机需求增长。行业趋势2025年人形机器人赛道融资活跃,但面临商业化落地争议,头部企业加速并购整合。四、其他相关机器人视频资源:可通过专业科技平台或企业官网(如优必选、新松)获取技术演示与应用案例。价格区间:服务型机器人(如保姆机器人)普遍在10万-16万元,男性机器人13万售价属高端定制产品。
手写数字识别是一种经典的模式识别和图像处理问题,旨在通过计算机自动识别用户手写的数字。
本文将教会你如何使用基于RV1106的 Lock视觉识别模块进行手写数字识别。
源代码:https://gie.com/LockzhinerAI/LockzhinerVisionModule/tree/master/Cpp_example/D02_DigitHandRecog
手写数字识别是一种利用和技术自动识别手写数字的过程。它通过图像预处理、特征提取和模型训练来实现高效准确的数字识别。被广泛应用于银行支票处理、邮政编码识别及考试评分等场景。这项技术不仅提高了数据处理的速度和准确性,还极大地简化了输入流程,为金融、邮政和教育等行业带来了显著的便利。
目前,实现手写数字识别方法有很多,常用的方法如下:
卷积(CNN):最流行的方法之一,能够自动从图像中学习特征。适用于复杂背景和不同书写风格的手写数字识别。
支持向量机(SVM):一种传统的机器学习方法,通过提取图像的特征(如HOG特征)进行分类,适合处理较为规范的手写数字。
K近邻(KNN):基于相似度的分类方法,通过比较待识别数字与训练样本的距离来进行分类,简单但计算成本较高。
#include
作用:用于声明PaddleClas类,使得PaddleClas类可以在当前源文件中使用。
lockzhiner_vision_module::PaddleClasmodel;
作用:用于实现手写数字识别。
参数说明:
无
返回值:
无
autoresult=model.Predict(input_mat);
作用:PaddleClas类中的一个函数,用于实现手写数字识别。
参数说明:
input_mat:要识别的图像。
返回值:
返回一个包含手写数字分类结果的对象。该Result对象包含预测得分(score)和对应的ID(label_id),即识别出的手写数字。
#include
作用:用于声明Visualize函数,使得Visualize函数可以在当前源文件中使用。
lockzhiner_vision_module::Visualize(input_mat,output_image,result);
参数说明:
input_mat:表示原始输入图像。
output_image:用于存储带有可视化结果的输出图像。
result:输入参数,表示手写数字识别的结果。该Result对象包含预测得分(score)和对应的标签ID(label_id)。
返回值:
无
初始化分类模型
lockzhiner_vision_module::PaddleClasmodel;
自定义函数参数如下
图片手写数字识别
intTestImage(conststd::string&image_path)
参数说明:
image_path:输入参数,表示包含手写数字的图像文件路径。
返回值:
返回0表示成功执行,并保存执行结果为"cls_result.png"。
摄像头实时手写数字识别
intTestCapture()
参数说明:
无
返回值:
返回0表示执行成功,并将检测结果绘制在原始图像上。程序会持续从摄像头读取帧并进行处理,直到手动终止程序。
#include#include#include#include#include#include#include#includeusingnamespestd::chrono;lockzhiner_vision_module::PaddleClas model;intTestCapture(){ // 初始化 edit 模块 lockzhiner_vision_module::Edit edit; if(!edit.StartAndAcceonnecon()) { std::cerr << "Error: Failed to start and accept connection." << std::endl; return EXIT_FAILURE; } std::cout << "Device connected successfully." << std::endl; cv::VideoCapture cap; // 设置摄像头长宽 cap.set(cv::CAP_PROP_FRAME_WIDTH, 640); cap.set(cv::CAP_PROP_FRAME_HEIGHT, 480); cap.open(0); if (!cap.isOpened()) { std::cerr << "Error: Could not open camera." << std::endl; return EXIT_FAILURE; } cv::Mat input_mat; while (true) { int read_index = 0; int time_ms = 0; for (int i = 0; i < 30; i++) { // 获取当前时间点作为开始时间 high_resolution_clock::time_point start_time = high_resolution_clock::now(); cap >> input_mat; if(input_mat.empty()) { continue; } // 使用 model 对象的 Predict 方法对输入图像进行预测 autoresult = model.Predict(input_mat); // 获取当前时间点作为结束时间 high_resolution_clock::time_point end_time = high_resolution_clock::now(); autotime_span =duration_cast(end_time - start_time); time_ms += time_span.count(); re_index +=1; std::cout << "score is " << result.score << ";label_id is " << result.label_id << std::endl; cv::Mat output_image; lockzhiner_vision_module::Visualize(input_mat, output_image, result); // 使用 edit 模块处理帧 edit.Print(output_image); } std::cout << "Frames per second: " << 1000.0 / time_ms * read_index << std::endl; } cap.release(); return 0;}int TestImage(const std::string &image_path){ cv::Mat input_image = cv::imread(image_path); auto result = model.Predict(input_image); std::cout << "score is " << result.score << ";label_id is " << result.label_id << std::endl; cv::Mat output_image; lockzhiner_vision_module::Visualize(input_image, output_image, result); cv::imwrite("cls_result.png", output_image); return 0;}int main(int argc, char *argv[]){ if (argc != 3) { std::cerr << "Usage: Test-PaddleClas model_path " << std::endl; return 1; } if (!model.Initialize(argv[1])) { std::cout << "Failed to initialize model." << std::endl; return 1; } std::string argument(argv[2]); if (argument == "Capture") { return TestCapture(); } else { return TestImage(argument); } return 0;}
请确保你已经按照开发环境搭建指南正确配置了开发环境。
同时已经正确连接开发板。
cmake_minimum_required(VEION3.10)project(test_DigitHandRecog)set(CMAKE_CXX_STANDARD17)set(CMAKE_CXX_STANDARD_REQUIRED ON)# 定义项目根目录路径set(PROJECT_ROOT_PATH"${CMAKE_CURRENT_SOURCE_DIR}/../..")message("PROJECT_ROOT_PATH = "${PROJECT_ROOT_PATH})include("${PROJECT_ROOT_PATH}/toolchains/-830--uclibcgnueabihf.toolchain.cmake")# 定义 OpenCV K 路径set(OpenCV_ROOT_PATH"${PROJECT_ROOT_PATH}/third_party/opencv-mobile-4.10.0-lockzhiner-vision-module")set(OpenCV_DIR"${OpenCV_ROOT_PATH}/lib/cmake/opencv4")find_package(OpenCV REQUIRED)set(OPENCV_LIBRARIES"${OpenCV_LIBS}")# 定义 LockzhinerVisionModule SDK 路径set(LockzhinerVisionModule_ROOT_PATH"${PROJECT_ROOT_PATH}/third_party/lockzhiner_vision_module_sdk")set(LockzhinerVisionModule_DIR"${LockzhinerVisionModule_ROOT_PATH}/lib/cmake/lockzhiner_vision_module")find_package(LockzhinerVisionModule REQUIRED)add_executable(Test-DigitHandRecogDigitHandRecog.cc)target_include_directories(Test-DigitHandRecogPRIVATE${LOCKZHINER_VISION_MODULE_INCLUDE_DIRS})target_link_libraries(Test-DigitHandRecogPRIVATE${OPENCV_LIBRARIES}${LOCKZHINER_VISION_MODULE_LIBRARIES})install( TARGETSTest-DigitHandRecog RUNTIME DESTINATION . )
使用 Docker Destop 打开 LockzhinerVisionModule 容器并执行以下命令来编译项目
# 进入Demo所在目录cd/LockzhinerVisionModuleWorkSpace/LockzhinerVisionModule/Cpp_example/D02_DigitHandRecog# 创建编译目录rm- build &&mkdirbuild &&cdbuild# 配置交叉编译工具链exportTOOLCHAIN_ROOT_PATH="/LockzhinerVisionModuleWorkSpace/arm-rockchip830-linux-uclibcgnueabihf"# 使用cmake配置项目cmake ..# 执行编译项目make -j8 && make install
在执行完上述命令后,会在build目录下生成可执行文件。
请确保你已经下载了凌智视觉模块手写数字分类模型
在凌智视觉模块输入以下命令:
chmod777Test-DigitHandRecog# 调用摄像头实时识别./Test-DigitHandRecogLZ-DigitHandRecog.rknn Capture# 单张图像识别./Test-DigitHandRecogLZ-DigitHandRecog.rknn image_path
图像识别效果图
通过上述内容,我们成功的实现了一个手写数字识别系统,包括:
获取并加载包含手写数字的图像。
进行手写数字的检测和分类,返回检测和分类后的结果。
可视化包含手写数字图像的识别结果。
全部评论
留言在赶来的路上...
发表评论