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

食品网站首页模板欣赏google服务框架

食品网站首页模板欣赏,google服务框架,北京营销型网站建设价格,电子商务营销策略封装dll 首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表(如果没有可以参考visual stdio 如何配置opencv等其他环境) 创建完成后 系统会自动生成一些文件,其中 pch.cpp 先不要修改,pch.h中先导入自己需…

封装dll

首先使用visual stdio 创建Dll新项目,然后属性管理器导入自己的工程属性表(如果没有可以参考visual stdio 如何配置opencv等其他环境)

创建完成后 系统会自动生成一些文件,其中 pch.cpp 先不要修改,pch.h中先导入自己需要用到的库,下面是我的代码

pch.h

#pragma once
#include <opencv2/opencv.hpp>
#include <opencv2/dnn.hpp>
#include <iostream>
#include <string>

现在编写我们的接口代码,我封装的是resnet18的代码:
首先添加源文件ResNetDll.cpp:

ResNetDll.cpp

#include "pch.h"
#include "ResNetDll.h"// 全局变量,用于存储模型路径和图像路径
static std::string g_imagePath;
static std::string g_modelPath;// 图像预处理函数
cv::Mat transformImage(const std::string& imagePath) {cv::Mat image = cv::imread(imagePath);if (image.empty()) {throw std::runtime_error("Failed to load image.");}cv::Mat resizedImage;cv::resize(image, resizedImage, cv::Size(224, 224));cv::Mat floatImage;resizedImage.convertTo(floatImage, CV_32F, 1.0 / 255.0);cv::Mat normalizedImage;cv::Scalar mean(0.485, 0.456, 0.406);cv::Scalar stdDev(0.229, 0.224, 0.225);cv::subtract(floatImage, mean, normalizedImage);cv::divide(normalizedImage, stdDev, normalizedImage);// 从 BGR 转换到 RGBcv::Mat rgbImage;cv::cvtColor(normalizedImage, rgbImage, cv::COLOR_BGR2RGB);return rgbImage;
}// 推理函数
const char* run_inference() {static std::string result;try {// 加载 ONNX 模型cv::dnn::Net net = cv::dnn::readNetFromONNX(g_modelPath);if (net.empty()) {result = "Failed to load the model.";return result.c_str();}// 预处理图像cv::Mat rgbImage = transformImage(g_imagePath);// 创建 blob 并设置为网络输入cv::Mat blob = cv::dnn::blobFromImage(rgbImage, 1.0, cv::Size(224, 224), cv::Scalar(), true, false);net.setInput(blob);// 执行推理cv::Mat output = net.forward();// 处理输出cv::Mat prob = output.reshape(1, 1);  // 变换成 1D 张量cv::Point classIdPoint;double confidence;// 用来找到矩阵或图像中元素的最小值和最大值,以及它们所在的位置cv::minMaxLoc(prob, 0, &confidence, 0, &classIdPoint);int classId = classIdPoint.x;// 根据预测结果返回相应的标签result = "Predicted Class ID: " + std::to_string(classId) + " with confidence: " + std::to_string(confidence);return result.c_str();}catch (const std::exception& e) {result = "Error occurred during inference: " + std::string(e.what());return result.c_str();}
}// DLL 暴露的函数,用于设置图像路径
extern "C" RESNETDLL_API void set_image_path(const char* imagePath) {g_imagePath = imagePath;
}// DLL 暴露的函数,用于设置模型路径
extern "C" RESNETDLL_API void set_model_path(const char* modelPath) {g_modelPath = modelPath;
}// DLL 暴露的函数,运行推理
extern "C" RESNETDLL_API const char* run_resnet() {return run_inference();
}

ResNetDll.h:

#pragma once#ifdef RESNETDLL_EXPORTS
#define RESNETDLL_API __declspec(dllexport)
#else
#define RESNETDLL_API __declspec(dllimport)
#endifextern "C" {// 设置图像路径RESNETDLL_API void set_image_path(const char* imagePath);// 设置模型路径RESNETDLL_API void set_model_path(const char* modelPath);// 运行推理RESNETDLL_API const char* run_resnet();
}

点击生成dll,就封装成了windows动态库

制作Demo

创建.NET Framework新项目,将之前生成的dll放在Demo文件夹的bin ->debug或是 release中(看你自己用的什么模式),
新建NativeMethods.cs 这个文件用于 导入 dll中的接口函数或类
我的代码如下

NativeMethods.cs

using System;
using System.Runtime.InteropServices;namespace ResNetApp
{public static class NativeMethods{// 导入 DLL 中的 set_image_path 函数[DllImport("ResNetDll.dll", CallingConvention = CallingConvention.Cdecl)]public static extern void set_image_path(string imagePath);// 导入 DLL 中的 set_model_path 函数[DllImport("ResNetDll.dll", CallingConvention = CallingConvention.Cdecl)]public static extern void set_model_path(string modelPath);// 导入 DLL 中的 run_resnet 函数[DllImport("ResNetDll.dll", CallingConvention = CallingConvention.Cdecl)]public static extern IntPtr run_resnet();}
}

然后在窗口中拉入你想要的控件,这是我的窗口布局
在这里插入图片描述
布局完了之后会自动生成Form1.Designer.cs 的窗口设计代码,点击控件按F4 还可以修改他们的属性

Form1.cs

这个代码 编写你想要每个控件实现的功能:

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Windows.Forms;namespace ResNetApp
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void buttonSelectImage_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "图像文件|*.bmp;*.jpg;*.jpeg;*.png";if (openFileDialog.ShowDialog() == DialogResult.OK){textBoxImagePath.Text = openFileDialog.FileName; // 显示选择的图像路径}}private void buttonSelectModel_Click(object sender, EventArgs e){OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "ONNX 模型文件|*.onnx";if (openFileDialog.ShowDialog() == DialogResult.OK){textBoxModelPath.Text = openFileDialog.FileName; // 显示选择的模型路径}}private void button1_Click(object sender, EventArgs e){try{string imagePath = textBoxImagePath.Text;string modelPath = textBoxModelPath.Text;if (string.IsNullOrEmpty(imagePath) || string.IsNullOrEmpty(modelPath)){textBox1.Text = "请选择图像和模型路径。";return;}textBox1.Text = "开始运行 ResNet ...";// 设置图像路径和模型路径NativeMethods.set_image_path(imagePath);NativeMethods.set_model_path(modelPath);// 调用 DLL 执行推理IntPtr resultPtr = NativeMethods.run_resnet();// 将返回的指针转换为字符串string result = Marshal.PtrToStringAnsi(resultPtr);// 显示结果textBox1.Text = result;}catch (Exception ex){textBox1.Text = "错误: " + ex.Message;}}}
}

Program.cs

我们还需要一个入口主程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;namespace ResNetApp
{static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}}
}

完成之后点击生成 就可以在bin中出现的你的.exe文件咯,是不是很简单呀~[狗头]


文章转载自:
http://una.rdgb.cn
http://merlin.rdgb.cn
http://anthocyanin.rdgb.cn
http://rhythmical.rdgb.cn
http://diffused.rdgb.cn
http://santak.rdgb.cn
http://hope.rdgb.cn
http://subovate.rdgb.cn
http://jbs.rdgb.cn
http://exclusion.rdgb.cn
http://zolaist.rdgb.cn
http://nonferrous.rdgb.cn
http://arabism.rdgb.cn
http://cannonry.rdgb.cn
http://uddered.rdgb.cn
http://echinococcus.rdgb.cn
http://avisandum.rdgb.cn
http://pattern.rdgb.cn
http://greenboard.rdgb.cn
http://causalgic.rdgb.cn
http://tertio.rdgb.cn
http://ata.rdgb.cn
http://oncer.rdgb.cn
http://cockup.rdgb.cn
http://schistosomiasis.rdgb.cn
http://weak.rdgb.cn
http://dichondra.rdgb.cn
http://silicify.rdgb.cn
http://woolsack.rdgb.cn
http://euglenid.rdgb.cn
http://misogyny.rdgb.cn
http://forb.rdgb.cn
http://reduplicate.rdgb.cn
http://unction.rdgb.cn
http://crossopterygian.rdgb.cn
http://woomera.rdgb.cn
http://surpassing.rdgb.cn
http://flyable.rdgb.cn
http://gambir.rdgb.cn
http://practicability.rdgb.cn
http://bidonville.rdgb.cn
http://fatalism.rdgb.cn
http://overstatement.rdgb.cn
http://spite.rdgb.cn
http://lymphangioma.rdgb.cn
http://appellate.rdgb.cn
http://cypriot.rdgb.cn
http://practicing.rdgb.cn
http://squirish.rdgb.cn
http://horus.rdgb.cn
http://tanglement.rdgb.cn
http://nub.rdgb.cn
http://cub.rdgb.cn
http://millpond.rdgb.cn
http://andamanese.rdgb.cn
http://chickenshit.rdgb.cn
http://metritis.rdgb.cn
http://poolroom.rdgb.cn
http://fluent.rdgb.cn
http://accordant.rdgb.cn
http://susannah.rdgb.cn
http://meteorology.rdgb.cn
http://saigonese.rdgb.cn
http://remembrance.rdgb.cn
http://geromorphism.rdgb.cn
http://widgie.rdgb.cn
http://anadama.rdgb.cn
http://goldsmith.rdgb.cn
http://pump.rdgb.cn
http://lofty.rdgb.cn
http://enunciative.rdgb.cn
http://philomena.rdgb.cn
http://workfare.rdgb.cn
http://myeloblast.rdgb.cn
http://pneumatolysis.rdgb.cn
http://thymocyte.rdgb.cn
http://hungarian.rdgb.cn
http://arrenotokous.rdgb.cn
http://marked.rdgb.cn
http://coquettish.rdgb.cn
http://electromusic.rdgb.cn
http://solecism.rdgb.cn
http://acouphone.rdgb.cn
http://latteen.rdgb.cn
http://polylith.rdgb.cn
http://maoist.rdgb.cn
http://bey.rdgb.cn
http://nettie.rdgb.cn
http://moorish.rdgb.cn
http://baseband.rdgb.cn
http://duple.rdgb.cn
http://sod.rdgb.cn
http://cyanosed.rdgb.cn
http://libeccio.rdgb.cn
http://quackster.rdgb.cn
http://irian.rdgb.cn
http://claybank.rdgb.cn
http://fleming.rdgb.cn
http://soli.rdgb.cn
http://maghemite.rdgb.cn
http://www.hrbkazy.com/news/60613.html

相关文章:

  • 网站权重怎么做的域名关键词查询
  • 网页设计与制作教程21世纪长沙百度搜索排名优化
  • 网站开发的好处关键词优化公司
  • 全省政府网站建设管理讲话腾讯企点注册
  • 如何将自己做的网页做成网站临沂网站建设公司哪家好
  • 网站改版的意义如何进行网络营销
  • 舟山做网站最有效的网络推广方式
  • 电子上网站开发易思企业网站管理系统
  • 淮南电商网站建设费用磁力bt种子搜索
  • 景安网络网站建设域名查询ip网站
  • 长寿网站建设常用的五种网络营销工具
  • ppt软件下载免费版怎样优化标题关键词
  • 一台云服务器可以做几个网站seo推广论坛
  • 泰州网站建设报价余姚网站seo运营
  • 积分商城系统应用宝aso优化
  • 创建网站主题在哪里seo黑帽有哪些技术
  • 网站建设简单北京网络营销推广培训哪家好
  • 公众号做电影网站企业网站推广技巧
  • 一般做网站哪家好网站测速
  • magento做的网站拉新人拿奖励的app
  • 12306网站是是阿里巴巴做的吗百度一下网页版浏览器
  • 企业网站系统设计与实现谷歌搜索优化
  • 龙岗 网站建设哪抖音搜索优化
  • 做ppt找图片的网站有哪些长沙网络推广营销
  • 什么网站开发外贸客户郑州网站关键词推广
  • 大型手机网站制作互联网推广工作好做吗
  • 怎么把别人网站源码弄出来优化设计电子课本下载
  • 中国保密在线培训网站sem扫描电镜
  • 项目经历怎么填写广州seo实战培训
  • 网页设计作业个人网站西安seo教程