在HiSpark AI Camera套件上如何使用图像处理

之前听说HI 3516DV300套件上可以实现人脸识别与车牌识别等功能,但在网上没有找到相关的教程。

现在想在这个AI Camera套件上实现一个简单的水果识别,主要是图像处理获取图像角点,提取颜色做一个简单识别。

之前自己是在OpenCV上实现的,在这个开发板上要怎么实现呢?

AI Camera
3516
3516DV300
图像处理
2021-03-13 18:50:08
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
红叶亦知秋

暂时看到的人脸识别的方法也是通过在鸿蒙上运行opencv实现的,给楼主一份移植示例,这份代码在鸿蒙上运行,只能运行大概十多秒,然后就要卡死,暂时还没有找到原因。

    #include "opencv2/core.hpp"
    #include "opencv2/face.hpp"
    #include "opencv2/highgui.hpp"
    #include "opencv2/imgproc.hpp"
    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include "Main.h"
    #include "opencv2/objdetect/objdetect.hpp"
    using namespace cv;
    using namespace cv::face;
    using namespace std;

    static char* FACES_MODEL = "./face.yaml";
    static char* FACES_TXT_PATH = "./face.txt";
    static char* HAARCASCADE_FRONTALFACE_ALT = "./haarcascade_frontalface_alt.xml";//人脸数据集

    /*
    *  url:传入图片路径;url2:储存到的路径
    */
    void rectface(char* url, char* url2) {
            char *HARR_XML_PATH1 = HAARCASCADE_FRONTALFACE_ALT;//-配置文件 xml
            string fn_haar = string(HARR_XML_PATH1);
            //人脸识别算法
            CascadeClassifier haar_cascade; //级联分类器检测类
            haar_cascade.load(fn_haar);
            vector< Rect_<int> > faces;
            Mat picture = imread(url, CV_LOAD_IMAGE_COLOR);

            haar_cascade.detectMultiScale(picture, faces);
            for (int i = 0; i < faces.size(); i++) {
                    rectangle(picture, faces[i], CV_RGB(0, 255, 0), 1);
                    putText(picture, "", Point(faces[i].x, faces[i].y), FONT_HERSHEY_PLAIN, 1.0, CV_RGB(0, 255, 0), 2.0);
            }
            imwrite(url2, picture);
    }

    /*
    *   url:传入图片路径;url2:储存到的路径
    */
    int grayface(char* url, char* url2) {
            char *HARR_XML_PATH1 = HAARCASCADE_FRONTALFACE_ALT;
            string fn_haar = string(HARR_XML_PATH1);    //-配置文件 xml
            //人脸识别算法
            CascadeClassifier haar_cascade;
            haar_cascade.load(fn_haar);
            Mat gray;
            vector< Rect_<int> > faces;
            Mat picture = imread(url, CV_LOAD_IMAGE_COLOR);

            if (!picture.empty()) {
                    cvtColor(picture, gray, CV_BGR2GRAY);
                    equalizeHist(gray, gray);    //直方图均衡化
            }
            //将灰度化的图片用于识别出人脸faces
            haar_cascade.detectMultiScale(gray, faces);

            //识别多张人脸
            for (int i = 0; i < faces.size(); i++) {
                    Rect face_i = faces[i];
                    Mat face = gray(face_i);
                    char urltext[256];
                    sprintf(urltext, "%s%s%d%s", url2, "gray", i, ".png");
                    imwrite(urltext, face);
            }
            return faces.size();
    }

    int main(int argc, const char *argv[]) {
            rectface("./1.png", "./1_1.png");
            //grayface("./1.png", "./");
            return 0;
    }
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
分享
微博
QQ
微信
回复
2021-03-17 15:57:38
相关问题
HarmonyOS中的智能图像处理如何实现?
1053浏览 • 0回复 待解决
Hi3516DV300开发套件无法
508浏览 • 0回复 待解决
图像处理库是否有替代的解决方案
1270浏览 • 0回复 待解决
元服务的AI能力,如何集成AI功能?
335浏览 • 1回复 待解决