色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用V851se視覺開發(fā)板制作超低成本的小相機(jī)

全志在線 ? 來源:全志在線 ? 2024-02-25 10:05 ? 次閱讀

用39塊錢的V851se視覺開發(fā)板做了個(gè)小相機(jī)。

可以進(jìn)行物品識別、自動追焦!

我和我的小伙伴都饞哭了!

這個(gè)超低成本的小相機(jī)是在V851se上移植使用全志在線開源版本的Tina LinuxOpenCV框架開啟攝像頭拍照捕獲視頻,并結(jié)合NPU實(shí)現(xiàn)Mobilenet v2目標(biāo)分類識別以及運(yùn)動追蹤等功能......并最終實(shí)現(xiàn)功能完整的智能小相機(jī)。

ISP適配

可以適配V851se的Tina5.0升級到了21.05版本的OpenWrt,相較于商業(yè)量產(chǎn)版本的Tina Linux 支持更多新的軟件包,不過可惜的是MPP包沒有移植到Tina5.0,所以想使用攝像頭就需要另辟蹊徑。

雖然Tina5.0并沒有移植MPP包,但也內(nèi)置了一個(gè)libAWispApi,支持在用戶層對接 ISP,但是很可惜這個(gè)包也沒有適配V85x系列,這里就需要自行適配。

其實(shí)適配很簡單,SDK 已經(jīng)提供了lib只是沒提供編譯支持,我們需要前往以下文件夾中新建一個(gè)v851se文件夾:

openwrt/package/allwinner/vision/libAWIspApi/machinfo

然后再新建文件build.mk寫入如下配置:

ISP_DIR:=isp600

1dc100ee-d22e-11ee-a297-92fbcf53809c.png

然后在menuconfig中勾選上這個(gè)包,并進(jìn)行如下配置:

Allwinner --->
 Vision --->
  <*> camerademo........................................ camerademo test sensor --->
   [*]  Enabel vin isp support

1dcebd06-d22e-11ee-a297-92fbcf53809c.png

編譯系統(tǒng)然后燒錄系統(tǒng),運(yùn)行命令camerademo,可以看到是正常拍攝照片的

1ddcc36a-d22e-11ee-a297-92fbcf53809c.png

OpenCV適配

* OpenCV在打包好的固件中已經(jīng)默認(rèn)適配好了,如果不想了解如何適配OpenCV可以直接前往文末【閱讀原文】獲取資料并跳過這部分

OpenCV默認(rèn)不支持開啟RAW Sensor,不過現(xiàn)在需要配置為OpenCV開啟RAW Sensor抓圖,然后通過OpenCV送圖到之前適配的libAWispApi庫進(jìn)行 ISP 處理。

在這里增加一個(gè)函數(shù)作為 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
", deviceName.c_str());
    return false;
  }


  if (-1 == ioctl(deviceHandle, VIDIOC_G_CTRL, &ctrl)) {
    fprintf(stderr, "V4L2: %s G_CTRL V4L2_CID_SENSOR_TYPE failed
", deviceName.c_str());
    return false;
  }


  return ctrl.value == V4L2_SENSOR_TYPE_RAW;
}
#endif

這段代碼的功能是檢查V4L2攝像頭設(shè)備的傳感器類型是否為RAW格式。它使用了V4L2的ioctl函數(shù)來查詢和獲取傳感器類型信息

然后在OpenCV的捕獲流函數(shù):

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)的啟動和停止。根據(jù)條件的不同,可以選擇在開始視頻流捕獲時(shí)啟動ISP流處理,或者在停止視頻流捕獲時(shí)停止ISP流處理,以便對視頻數(shù)據(jù)進(jìn)行處理和增強(qiáng)。

至于其他包括編譯腳本的修改,全局變量定義等操作,可以參考原文鏈接中的補(bǔ)丁文件。

在執(zhí)行完以上步驟后,可以快速測試攝像頭輸出demo:

OpenCV --->
 <*> opencv....................................................... opencv libs
 [*]  Enabel sunxi vin isp support
 <*> opencv_camera.............................opencv_camera and display image

MobileNet V2

MobileNet V2是一種輕量級的卷積神經(jīng)網(wǎng)絡(luò),它專為移動設(shè)備和嵌入式設(shè)備上的實(shí)時(shí)圖像分類和目標(biāo)檢測任務(wù)設(shè)計(jì)。

MobileNet V2的關(guān)鍵特點(diǎn)包括使用深度可分離卷積來減少計(jì)算量和參數(shù)數(shù)量,引入帶線性瓶頸的倒殘差結(jié)構(gòu)以增加非線性表示能力,以及提供寬度乘數(shù)參數(shù)以適應(yīng)不同計(jì)算資源限制。這些特點(diǎn)使得MobileNet V2成為資源受限的移動設(shè)備上的理想選擇。

首先對輸入圖像進(jìn)行預(yù)處理,以適應(yīng)MobileNet V2 SSD模型的輸入要求。通過通道格式轉(zhuǎn)換、圖像大小調(diào)整和數(shù)據(jù)填充等操作,將輸入圖像轉(zhuǎn)換為適合模型輸入的格式。

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);
  else
    cv::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

關(guān)鍵步驟是要實(shí)現(xiàn)非極大值抑制算法(NMS),用于去除高度重疊的框,只保留得分最高的那個(gè)框。算法通過計(jì)算框之間的交集面積和設(shè)置的閾值來進(jìn)行篩選,并將保留的框的索引存儲在picked向量中。

// 非極大值抑制算法(NMS)
static void nms_sorted_bboxes(const std::vector& bboxs, std::vector& picked, float nms_threshold) {
  picked.clear();
  const int n = bboxs.size();
  
  // 創(chuàng)建存儲每個(gè)框面積的向量
  std::vector areas(n);
  
  // 計(jì)算每個(gè)框的面積并存儲
  for (int i = 0; i < n; i++){
 ? ? ? ?areas[i] = (bboxs[i].xmax - bboxs[i].xmin) * (bboxs[i].ymax - bboxs[i].ymin);

通過一系列操作,包括轉(zhuǎn)換為向量、計(jì)算縮放比例、創(chuàng)建存儲檢測結(jié)果的向量等,將輸出數(shù)據(jù)轉(zhuǎn)換為檢測結(jié)果,并按照置信度從高到低排序。然后應(yīng)用非極大值抑制算法對檢測結(jié)果進(jìn)行篩選,最后將篩選后的目標(biāo)框位置、大小和類別置信度等信息繪制在圖像上。

// 按照分?jǐn)?shù)對框進(jìn)行排序
  std::sort(BBox.begin(), BBox.end(), comp);


  // 應(yīng)用非極大值抑制算法,獲取保留的框的索引
  std::vector keep_index;
  nms_sorted_bboxes(BBox, keep_index, iou_threshold);


  // 創(chuàng)建存儲框位置的向量
  std::vector bbox_per_frame;


  // 遍歷保留的框,繪制框和標(biāo)簽
  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開發(fā)流程

V851se芯片內(nèi)置一顆NPU,其處理性能為最大0.5TOPS并有128KB內(nèi)部高速緩存用于高速數(shù)據(jù)交換,NPU 開發(fā)完整的流程如下圖所示:

1e461112-d22e-11ee-a297-92fbcf53809c.png

模型訓(xùn)練

在模型訓(xùn)練階段,用戶根據(jù)需求和實(shí)際情況選擇合適的框架(如Caffe、TensorFlow 等)使用數(shù)據(jù)集進(jìn)行訓(xùn)練得到符合需求的模型,此模型可稱為預(yù)訓(xùn)練模型。也可直接使用已經(jīng)訓(xùn)練好的模型。V851s 的 NPU 支持包括分類、檢測、跟蹤、人臉、姿態(tài)估計(jì)、分割、深度、語音、像素處理等各個(gè)場景90 多個(gè)公開模型。

signal函數(shù)

在模型轉(zhuǎn)化階段,通過Acuity Toolkit把預(yù)訓(xùn)練模型和少量訓(xùn)練數(shù)據(jù)轉(zhuǎn)換為NPU可用的模型NBG文件。一般步驟如下:

模型導(dǎo)入,生成網(wǎng)絡(luò)結(jié)構(gòu)文件、網(wǎng)絡(luò)權(quán)重文件、輸入描述文件和輸出描述文件。

模型量化,生成量化描述文件和熵值文件,可改用不同的量化方式。

仿真推理,可逐一對比float和其他量化精度的仿真結(jié)果的相似度,評估量化后的精度是否滿足要求。

模型導(dǎo)出,生成端側(cè)代碼和*.nb 文件,可編輯輸出描述文件的配置,配置是否添加后處理節(jié)點(diǎn)等。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209328
  • 相機(jī)
    +關(guān)注

    關(guān)注

    4

    文章

    1350

    瀏覽量

    53581
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97372
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    634

    瀏覽量

    41337

原文標(biāo)題:用39塊錢的視覺開發(fā)板做了個(gè)小相機(jī),還可以物品識別、自動追焦!

文章出處:【微信號:gh_79acfa3aa3e3,微信公眾號:全志在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    如何使用TinyVision去手動構(gòu)建Linux 6.1+Debian 12鏡像呢?

    SyterKit是一個(gè)純裸機(jī)框架,可以用于TinyVision或者v851se/v851s/v853等芯片的開發(fā)板,SyterKit使用CMake作為構(gòu)建系統(tǒng)構(gòu)建,支持多種應(yīng)用與多種外
    的頭像 發(fā)表于 03-15 18:16 ?2043次閱讀
    如何使用TinyVision去手動構(gòu)建Linux 6.1+Debian 12鏡像呢?

    1月全志芯片開源項(xiàng)目分享合輯

    V851se,芯片內(nèi)置0.5Tops算力,可用于AI視覺IPC攝像頭,內(nèi)置100M ephy可以支持路由設(shè)備功能。開發(fā)板在外設(shè)功能的增加上采用了硬件堆疊的方式,V851se
    發(fā)表于 01-29 10:20

    用39塊錢的全志V851se視覺開發(fā)板做了個(gè)小相機(jī),還可以物品識別、自動追焦!

    用39塊錢的V851se視覺開發(fā)板做了個(gè)小相機(jī)。 可以進(jìn)行物品識別、自動追焦! 這個(gè)超低成本的小相機(jī)
    發(fā)表于 02-26 10:21

    在基于全志V851se的TinyVision上手動構(gòu)建 Linux 6.1 + Debian 12 鏡像

    構(gòu)建 SyterKit 作為 Bootloader SyterKit 是一個(gè)純裸機(jī)框架,用于 TinyVision 或者其他 v851se/v851s/v851s3/v853 等芯片的
    發(fā)表于 03-18 10:49

    用39塊錢的視覺開發(fā)板做了個(gè)小相機(jī),還可以物品識別、自動追焦!

    用39塊錢的V851se視覺開發(fā)板做了個(gè)小相機(jī)。 可以進(jìn)行物品識別、自動追焦! 我和我的小伙伴都饞哭了! 這個(gè)超低成本的小
    發(fā)表于 04-08 15:07

    全志V851se開發(fā)板TinyVision鏡像制作快速啟動教程

    燒錄工具: PhoenixCard-V2.8 軟件:TinaTF卡最小系統(tǒng)鏡像:tina_v851se-tinyvision_uart0.img 燒錄過程請參考下述步驟: 打開 已經(jīng)下載好的 鳳凰卡
    發(fā)表于 04-10 16:50

    在全志V851SE開發(fā)板TinyVision上 使用 SyterKit 啟動 Linux 6.7 主線內(nèi)核

    s/v851s3/v853 等芯片的開發(fā)板,SyterKit 使用 CMake 作為構(gòu)建系統(tǒng)構(gòu)建,支持多種應(yīng)用與多種外設(shè)驅(qū)動。同時(shí) SyterKit 也具有啟動引導(dǎo)的功能,可以替代 U-Boot 實(shí)現(xiàn)
    發(fā)表于 05-20 09:35

    MicroPython支持的開發(fā)板:高性能、低成本,創(chuàng)客首選

    : TPYBoardv102:高性能、低成本的MicroPython開發(fā)板 TPYBoardv102是以遵照MIT許可的MicroPython為基礎(chǔ),由TurnipSmart公司制作的一款MicroPython
    發(fā)表于 04-15 14:49

    用于原型的小型低成本電路開發(fā)板

    描述用于原型的小型低成本電路開發(fā)板近年來,我用 Arduino 開發(fā)了許多原型。在這些創(chuàng)作過程中,總有一些事情困擾著我。在原型中使用 Arduino 占用了大量空間,價(jià)格昂貴,并且難
    發(fā)表于 09-05 07:18

    超低成本寬帶中間阻抗轉(zhuǎn)換器

    超低成本寬帶中間阻抗轉(zhuǎn)換器 本文介紹的低成本射頻阻抗轉(zhuǎn)換探頭的制作材料在實(shí)驗(yàn)室很容易得到。在處理低阻抗電路的問題時(shí),阻抗
    發(fā)表于 12-14 14:12 ?773次閱讀
    <b class='flag-5'>超低成本</b>寬帶中間阻抗轉(zhuǎn)換器

    低成本 MiniZed Zynq SoC 開發(fā)板

    MiniZed Zynq SoC 開發(fā)板基于全新 Xilinx Zynq Z-7007S 器件,現(xiàn)可通過安富利訂購,僅需 89 美元。該開發(fā)板為單核 ARM Cortex-A9 開發(fā)人員提供了一個(gè)
    的頭像 發(fā)表于 09-22 18:02 ?7425次閱讀

    stm32開發(fā)板哪個(gè)好

    V4; 在此首先列舉ST官方開發(fā)板。 1、Nucleo STM32 NUCLEO開發(fā)平臺是ST最新發(fā)布的易用性好、可擴(kuò)展性佳的低成本平臺。
    發(fā)表于 10-10 08:36 ?5.5w次閱讀

    Microchip XLP超低功耗16位開發(fā)板

    Microchip XLP超低功耗16位開發(fā)板
    的頭像 發(fā)表于 06-06 01:45 ?4075次閱讀
    Microchip XLP<b class='flag-5'>超低</b>功耗16位<b class='flag-5'>開發(fā)板</b>

    ARM開發(fā)板不工作的原因_Arm開發(fā)板制作過程

    本文主要闡述了ARM開發(fā)板不工作的原因及制作方法。
    發(fā)表于 09-11 16:07 ?2233次閱讀

    用于原型的小型低成本電路開發(fā)板

    電子發(fā)燒友網(wǎng)站提供《用于原型的小型低成本電路開發(fā)板.zip》資料免費(fèi)下載
    發(fā)表于 08-15 14:26 ?1次下載
    用于原型的小型<b class='flag-5'>低成本</b>電路<b class='flag-5'>開發(fā)板</b>
    主站蜘蛛池模板: 免费一级片网站| 美女pk精子2小游戏| 精品麻豆一卡2卡三卡4卡乱码| 花蝴蝶在线观看免费8| 和尚轮流澡到高潮H| 久久高清内射无套| 蜜芽一二三区| 肉多荤文高h羞耻校园| 午夜免费啪视频观看视频| 亚洲精品视频久久| 自拍 偷拍 亚洲 经典| 被老师按在办公桌吸奶头| 岛国片免费看| 红色机尾快播| 女人被弄到高潮叫床免| 色欲AV亚洲永久无码精品麻豆| 亚洲 在线 日韩 欧美| 伊人久久综合成人亚洲| jj插入bb| 国产亚洲色婷婷久久精品99| 久久久久亚洲| 日本久久道一区二区三区| 亚洲国产精品第一影院在线观看 | 女人爽到高潮嗷嗷叫视频| 日本一区二区三区在线观看网站| 午夜理论片YY4399影院| 与子敌伦刺激对白亂輪亂性| 啊轻点啊再深点视频免费| 国产三级精品三级在线观看| 麻豆精品无码久久久久久久久 | 日本一在线中文字幕| 性美国人xxxxx18| 97国产成人精品视频| 国产精品嫩草久久久久| 麻豆一二三四区乱码| 玩高中女同桌肉色短丝袜脚文| 在线免费视频a| 国产精品欧美亚洲| 美女屁股软件| 亚洲国产成人久久一区www妖精 | 国产人妻人伦精品久久无码|