当前位置: 首页 > news >正文

企业建站公司报价做网站的过程

企业建站公司报价,做网站的过程,安徽省城乡建设厅网站,企业网站推广注意事项用39块钱的V851se视觉开发板做了个小相机。 可以进行物品识别、自动追焦#xff01; 这个超低成本的小相机是在V851se上移植使用全志在线开源版本的Tina Linux与OpenCV框架开启摄像头拍照捕获视频#xff0c;并结合NPU实现Mobilenet v2目标分类识别以及运动追踪等功能…并最终…用39块钱的V851se视觉开发板做了个小相机。 可以进行物品识别、自动追焦 这个超低成本的小相机是在V851se上移植使用全志在线开源版本的Tina Linux与OpenCV框架开启摄像头拍照捕获视频并结合NPU实现Mobilenet v2目标分类识别以及运动追踪等功能…并最终实现功能完整的智能小相机。 ISP适配 可以适配V851se的Tina5.0升级到了21.05版本的OpenWrt相较于商业量产版本的Tina Linux 支持更多新的软件包不过可惜的是MPP包没有移植到Tina5.0所以想使用摄像头就需要另辟蹊径。 虽然Tina5.0并没有移植MPP包但也内置了一个libAWispApi包支持在用户层对接 ISP但是很可惜这个包也没有适配V85x系列这里就需要自行适配。 其实适配很简单SDK 已经提供了lib只是没提供编译支持我们需要前往以下文件夹中新建一个v851se文件夹 openwrt/package/allwinner/vision/libAWIspApi/machinfo然后再新建文件build.mk写入如下配置 ISP_DIR:isp600然后在menuconfig中勾选上这个包并进行如下配置 Allwinner ---Vision ---* camerademo........................................ camerademo test sensor ---[*] Enabel vin isp support编译系统然后烧录系统运行命令 camerademo 可以看到是正常拍摄照片的 OpenCV适配 OpenCV在打包好的固件中已经默认适配好了如果不想了解如何适配OpenCV可以直接前往点击链接获取资料并跳过这部分 OpenCV默认不支持开启RAW Sensor不过现在需要配置为OpenCV开启RAW Sensor抓图然后通过OpenCV送图到之前适配的libAWispApi库进行 ISP 处理。 在这里增加一个函数作为 RAW Sensor 抓图的处理。 #ifdef __USE_VIN_ISP__ bool CvCaptureCAM_V4L::RAWSensor() {struct v4l2_control ctrl;struct v4l2_queryctrl qc_ctrl;memset(ctrl, 0, sizeof(struct v4l2_control));memset(qc_ctrl, 0, sizeof(struct v4l2_queryctrl));ctrl.id V4L2_CID_SENSOR_TYPE;qc_ctrl.id V4L2_CID_SENSOR_TYPE;if (-1 ioctl (deviceHandle, VIDIOC_QUERYCTRL, qc_ctrl)){fprintf(stderr, V4L2: %s QUERY V4L2_CID_SENSOR_TYPE failed\n, deviceName.c_str());return false;}if (-1 ioctl(deviceHandle, VIDIOC_G_CTRL, ctrl)) {fprintf(stderr, V4L2: %s G_CTRL V4L2_CID_SENSOR_TYPE failed\n, deviceName.c_str());return false;}return ctrl.value V4L2_SENSOR_TYPE_RAW; } #endif这段代码的功能是检查V4L2摄像头设备的传感器类型是否为RAW格式。它使用了V4L2的ioctl函数来查询和获取传感器类型信息。 然后在OpenCV的捕获流函数 bool CvCaptureCAM_V4L::streaming(bool startStream)添加 ISP 处理 #ifdef __USE_VIN_ISP__RawSensor RAWSensor();if (startStream RawSensor) {int VideoIndex -1;sscanf(deviceName.c_str(), /dev/video%d, VideoIndex);IspPort CreateAWIspApi();IspId -1;IspId IspPort-ispGetIspId(VideoIndex);if (IspId 0)IspPort-ispStart(IspId);} else if (RawSensor IspId 0 IspPort) {IspPort-ispStop(IspId);DestroyAWIspApi(IspPort);IspPort NULL;IspId -1;} #endif这段代码主要用于控制图像信号处理ISP的启动和停止。根据条件的不同可以选择在开始视频流捕获时启动ISP流处理或者在停止视频流捕获时停止ISP流处理以便对视频数据进行处理和增强。 至于其他包括编译脚本的修改全局变量定义等操作可以参考原文链接中的补丁文件。 在执行完以上步骤后可以快速测试摄像头输出demo OpenCV ---* opencv....................................................... opencv libs[*] Enabel sunxi vin isp support* opencv_camera.............................opencv_camera and display imageMobileNet V2 MobileNet V2是一种轻量级的卷积神经网络它专为移动设备和嵌入式设备上的实时图像分类和目标检测任务设计。 MobileNet V2的关键特点包括使用深度可分离卷积来减少计算量和参数数量引入带线性瓶颈的倒残差结构以增加非线性表示能力以及提供宽度乘数参数以适应不同计算资源限制。这些特点使得MobileNet V2成为资源受限的移动设备上的理想选择。 首先对输入图像进行预处理以适应MobileNet V2 SSD模型的输入要求。通过通道格式转换、图像大小调整和数据填充等操作将输入图像转换为适合模型输入的格式。 void get_input_data(const cv::Mat sample, uint8_t* input_data, int input_h, int input_w, const float* mean, const float* scale){cv::Mat img;if (sample.channels() 1)cv::cvtColor(sample, img, cv::COLOR_GRAY2RGB);elsecv::cvtColor(sample, img, cv::COLOR_BGR2RGB);cv::resize(img, img, cv::Size(input_h, input_w));uint8_t* img_data img.data;/* nhwc to nchw */for (int h 0; h input_h; h) {for (int w 0; w input_w; w) {for (int c 0; c 3; c) {int in_index h * input_w * 3 w * 3 c;int out_index c * input_h * input_w h * input_w w;input_data[out_index] (uint8_t)(img_data[in_index]); //uint8关键步骤是要实现非极大值抑制算法(NMS)用于去除高度重叠的框只保留得分最高的那个框。算法通过计算框之间的交集面积和设置的阈值来进行筛选并将保留的框的索引存储在picked向量中。 // 非极大值抑制算法NMS static void nms_sorted_bboxes(const std::vectorBbox_t bboxs, std::vectorint picked, float nms_threshold) {picked.clear();const int n bboxs.size();// 创建存储每个框面积的向量std::vectorfloat areas(n);// 计算每个框的面积并存储for (int i 0; i n; i){areas[i] (bboxs[i].xmax - bboxs[i].xmin) * (bboxs[i].ymax - bboxs[i].ymin);通过一系列操作包括转换为向量、计算缩放比例、创建存储检测结果的向量等将输出数据转换为检测结果并按照置信度从高到低排序。然后应用非极大值抑制算法对检测结果进行筛选最后将筛选后的目标框位置、大小和类别置信度等信息绘制在图像上。 // 按照分数对框进行排序std::sort(BBox.begin(), BBox.end(), comp);// 应用非极大值抑制算法获取保留的框的索引std::vectorint keep_index;nms_sorted_bboxes(BBox, keep_index, iou_threshold);// 创建存储框位置的向量std::vectorcv::Rect bbox_per_frame;// 遍历保留的框绘制框和标签for(int i 0; i keep_index.size(); i) {int left BBox[keep_index[i]].xmin;int top BBox[keep_index[i]].ymin;int right BBox[keep_index[i]].xmax;int bottom BBox[keep_index[i]].ymax;cv::rectangle(bgr, cv::Point(left, top), cv::Point(right, bottom), cv::Scalar(0, 0, 255), 1);char text[256];sprintf(text, %s %.1f%%, class_names[BBox[keep_index[i]].cls_idx], BBox[keep_index[i]].score * 100);cv::putText(bgr, text, cv::Point(left, top), cv::FONT_HERSHEY_COMPLEX, 1, cv::Scalar(0, 255, 255), 1, 8, 0);bbox_per_frame.emplace_back(left, top, width, height);}NPU开发流程 V851se芯片内置一颗NPU其处理性能为最大0.5TOPS并有128KB内部高速缓存用于高速数据交换NPU 开发完整的流程如下图所示 模型训练 在模型训练阶段用户根据需求和实际情况选择合适的框架如Caffe、TensorFlow 等使用数据集进行训练得到符合需求的模型此模型可称为预训练模型。也可直接使用已经训练好的模型。V851s 的 NPU 支持包括分类、检测、跟踪、人脸、姿态估计、分割、深度、语音、像素处理等各个场景90 多个公开模型。 signal函数 在模型转化阶段通过Acuity Toolkit把预训练模型和少量训练数据转换为NPU可用的模型NBG文件。一般步骤如下 1、模型导入生成网络结构文件、网络权重文件、输入描述文件和输出描述文件。 2、模型量化生成量化描述文件和熵值文件可改用不同的量化方式。 3、仿真推理可逐一对比float和其他量化精度的仿真结果的相似度评估量化后的精度是否满足要求。 4、模型导出生成端侧代码和*.nb 文件可编辑输出描述文件的配置配置是否添加后处理节点等。
http://www.dnsts.com.cn/news/235953.html

相关文章:

  • 个人主页类网站开发背景响应式网站 768 320
  • 网站开发包括后台 前台个人自我介绍网页
  • 一个网站放两个vps我们不是做网站的
  • 中国建设厅官方网站网站建设职业去哪里上班
  • 网站制作与网页制作广州seo培训
  • 网站平台需要做无形资产吗 怎么做微信公众管理平台
  • 山东电力建设河北分公司网站手机做网站对比路由器做网站
  • seo网站优化课程怎样凡科建设网站
  • 做一个同城便民信息网站怎么做门户网站做公众号的好处
  • 做调查问卷的网站知乎网站视频嵌入代码
  • 重庆网站推广联系方式莱芜招聘
  • 网站建设伍金手指下拉8开化网站建设公司
  • 佛山企业网站建设策划苏州有什么好玩的游乐园
  • 视频网站logo怎么做的电子商务网站开发环境
  • 免费模板素材网站有哪些网站备案地址
  • 深圳龙岗淘宝网站建设公司有哪些wordpress首饰商城系统
  • 贵州网站建设 零玖伍壹网络推广及建设网站
  • 网站app公众号先做哪个比较好网上商城交易平台
  • 网站 备案 哪个省百度免费推广平台
  • 网站模板怎么建站cad做彩图那个网站应用好用
  • 勒流网站建设制作网站设计公司排名知乎
  • 网站开发什么叫前端后端公关就是陪人睡觉吗
  • 联通网站自主备案系统企业网站备案要钱吗
  • 河南省建设注册执业中心网站广州市建设交易服务中心网站
  • 配资网站建设是什么意思phpcms 专题网站模板
  • 完成网站的建设工作中英文网站模板
  • 做印刷品去哪个网站超酷的网站设计
  • 新建网站的价格传奇
  • gta5网站建设网站建设方案书 本案
  • 昭通网站seo优化济南集团网站建设方案