vc++(vs2017版本)下调用python生成的tensorflow2.0 xx.pb模型进行神经网络图片预测。

代码:

#pragma once

class CMyAiMode
{
public:
    CMyAiMode();
    ~CMyAiMode();
public:
    void Test();
};

#include "pch.h"
#include "MyAiMode.h"
#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/dnn.hpp>
#include <iostream>
using namespace cv;
using namespace std;
using namespace cv::dnn;

CMyAiMode::CMyAiMode()
{
}


CMyAiMode::~CMyAiMode()
{
}

void CMyAiMode::Test()
{
    std::string strPath;
    strPath = "D:\\5.jpg";
    Mat src_image = imread(strPath);
    if (src_image.empty())
    {
        return;
    }
    size_t num_c = src_image.channels();
    cv::Size sz = src_image.size();
    string path = "D:\\weld.pb";
    Net net = readNetFromTensorflow(path);
    double d = 1.0 / 255;
    cv::Scalar mean{ 0, 0, 0 };
    bool swapRB{ true };//关键
    int inputW = 100;//模型图片宽高
    int inputH = 100;
    Mat blob = blobFromImage(src_image, d, cv::Size(inputW, inputH), mean, swapRB, false);
    net.setInput(blob);
    Mat out = net.forward();
    TRACE(_T("cols:%d %d elemsize:%d channels:%d, total:%d result:%.6f %.8f\n"), out.cols, out.rows, out.elemSize(), out.channels(), out.total(), out.at<float>(0,0), out.at<float>((0,1)));
    float f, f2;//预测结果为两个标签, 各自概率
    memcpy(&f, out.data, sizeof(float));
    memcpy(&f2, out.data+4, sizeof(float));
    TRACE(_T("%.6f %.6f"), f, f2);
}

opencv库下载地址:https://download.csdn.net/download/wcqq12345/87249348

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐