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

岳阳市网站建设_网站建设公司_HTML_seo优化

深圳求职招聘网站,互联网行业发展,俄罗斯引擎搜索,阜阳网站制作公司去哪找【深度学习】【Opencv】python/C调用onnx模型【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【Opencv】python/C调用onnx模型【基础】前言Python版本OpenCVWindows平台安装OpenCVopencv调用onnx模型 C版本OpenCVWindows平…【深度学习】【Opencv】python/C调用onnx模型【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【Opencv】python/C调用onnx模型【基础】前言Python版本OpenCVWindows平台安装OpenCVopencv调用onnx模型 C版本OpenCVWindows平台安装OpenCVopencv调用onnx模型简单使用调用onnx模型 总结 前言 OpenCV是一个基于BSD许可发行的跨平台计算机视觉和机器学习软件库(开源)可以运行在Linux、Windows、Android和Mac OS操作系统上。可以将pytorch中训练好的模型使用ONNX导出再使用opencv中的dnn模块直接进行加载使用。 系列学习目录 【CPU】Pytorch模型转ONNX模型流程详解 【GPU】Pytorch模型转ONNX格式流程详解 【ONNX模型】快速部署 【ONNX模型】多线程快速部署 【ONNX模型】Opencv调用onnx Python版本OpenCV Windows平台安装OpenCV 博主在win10环境下装anaconda环境而后搭建onnx模型运行所需的openCV环境。 # 搭建opencv环境 conda create -n opencv_onnx python3.10 -y # 激活环境 activate opencv_onnx # 安装opencv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python查看opencv版本 import cv2 cv2.__version__opencv调用onnx模型 现在代码抛开任何pytorch相关的依赖也抛开了onnx相关的依赖只使用opencv完成了整个推理流程。 import cv2 import numpy as npdef normalizeImage(image,mean,std):normalized image.astype(np.float32)normalized normalized / 255.0 - meannormalized normalized / stdreturn normalizeddef main():# 读取图片image cv2.imread(r./animal-1.jpg)# 将BGR图像转换为RGB格式image cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 获取图像的大小ori_w, ori_h, image.shape[0], image.shape[1]# 指定调整后的大小new_width 416new_height 416# 图片尺寸缩放resized_img cv2.resize(image, (new_width, new_height), interpolationcv2.INTER_AREA)# 定义每个通道的归一化参数mean np.array([0.485, 0.456, 0.406]).astype(np.float32) # 均值std np.array([0.229, 0.224, 0.225]).astype(np.float32) # 标准差# 图片归一化normalized normalizeImage(resized_img, mean, std)# 加载ONNX模型net cv2.dnn.readNetFromONNX(PFNet.onnx) # 加载训练好的识别模型# onnx是多输出,每个输出都会对应一个name,因此需要获取所有输出的nameoutput_layer_names net.getUnconnectedOutLayersNames()blob cv2.dnn.blobFromImage(normalized) # 由图片加载数据 这里还可以进行缩放、归一化等预处理# 将Blob设置为模型的输入net.setInput(blob)# 运行前向传播,将所有输出name作为参数传递out net.forward(output_layer_names)out np.squeeze(out[3]) * 255.0output cv2.resize(out, (ori_h, ori_w), interpolationcv2.INTER_AREA)# 保存图像cv2.imwrite(saved_opencv_python_image.png, output)if __name__ __main__:main()C版本OpenCV Windows平台安装OpenCV 官网下载安装文件地址博主使用opencv-4.8.0-windows.exe版本双击运行解压后即可获得以下文件 打开VS 2019新建新项目----控制台应用----配置项目----项目路径以及勾选“将解决方案和项目放在同一目录中----点击创建。 设置OpenCV路径项目----属性。 添加附加包含目录Debug | x64----C/C±—常规----附加包含目录。 D:\C_demo\opencv\build\x64\vc16\bin D:\C_demo\opencv\build\bin D:\C_demo\opencv\build\include D:\C_demo\opencv\build\include\opencv2链接器Debug | x64----链接器----常规----附加包含目录。 D:\C_demo\opencv\build\x64\vc16\lib链接器Debug | x64----链接器----输入----附加依赖项。 在D:\C_demo\opencv\build\x64\vc16\lib下找到附加依赖项的文件。 opencv_world480d.lib在Debug x64模式下测试要将带有d的opencv_world480d.dll文件复制到自己项目的Debug下。 没有Debug目录时需要在Debug | x64模式下运行一遍代码。 D:\C_demo\opencv\build\x64\vc16\binD:\C_demo\opencv_onnx\x64\Debug这里博主为了方便调试安装的是debug版本的读者可以安装release版本的只需要将属性的Debug | x64变成Release | x64即可再将opencv_world480.dll文件复制到自己项目的Release下。 opencv调用onnx模型 简单使用 这里简单验证一下opencv是否安装成功适用于包括博主在内的许多对c不熟悉的人来说代码完成了简单的图像的读取与显示。 #include opencv2/opencv.hpp using namespace cv; using namespace std; int main(int argc, char** argv) {Mat src imread(./animal-1.jpg);//没有图像输入if (src.empty()) {printf(....\n);return -1;}//namedWindow(输入窗口, WINDOW_FREERATIO);imshow(输入窗口, src);waitKey(0);destroyAllWindows();return 0; }调用onnx模型 将python版本的opencv转化成对应的c版本的发现输出的效果完全一致onnx模型可以作为c的接口来供其他应用调用。 #include iostream #include string #include vector #includeopencv2/opencv.hpp #include opencv2/dnn.hpp using namespace std; cv::Mat normalizeImage(const cv::Mat image, const cv::Scalar mean, const cv::Scalar std) {cv::Mat normalized;image.convertTo(normalized, CV_32F);cv::subtract(normalized / 255.0, mean, normalized);cv::divide(normalized, std, normalized);return normalized; } int main() { // 读取图片cv::Mat bgrImage cv::imread(./animal-1.jpg, cv::IMREAD_COLOR);// 图片格式转化bgr--rgbcv::Mat rgbImage;cv::cvtColor(bgrImage, rgbImage, cv::COLOR_BGR2RGB);// 获取图像的大小cv::Size originalSize(rgbImage.cols, rgbImage.rows);cv::Mat resizedImage;// 定义目标图像大小cv::Size targetSize(416, 416);//图片尺寸缩放cv::resize(rgbImage, resizedImage, targetSize, 0, 0, cv::INTER_AREA);// 定义每个通道的归一化参数cv::Scalar mean(0.485, 0.456, 0.406); // 均值cv::Scalar std(0.229, 0.224, 0.225); // 标准差// 图片归一化cv::Mat normalized normalizeImage(resizedImage, mean, std);// 加载ONNX模型cv::dnn::Net net cv::dnn::readNetFromONNX(D:/C_demo/opencv_onnx/PFNet.onnx);cv::Mat blob cv::dnn::blobFromImage(normalized);// 将Blob设置为模型的输入net.setInput(blob);// 运行前向传播std::vectorcv::Mat output_probs;// 获取多输出对应的名称std::vectorcv::String output_layer_names net.getUnconnectedOutLayersNames();net.forward(output_probs, output_layer_names);cv::Mat prediction output_probs[3];cv::Mat mask;cv::resize(prediction.reshape(1, 416) * 255.0, mask, originalSize, 0, 0, cv::INTER_AREA);cv::imwrite(saved_opencv_c_image.png, mask);return 0; }总结 尽可能简单、详细的介绍Python和C下POpencv调用ONNX模型的流程。
http://www.ihoyoo.com/news/10137.html

相关文章:

  • 建网站的流程和费用旅游网站开发的流程图
  • 网站建设合同附加协议wordpress开启小工具
  • 高要网站制作wordpress班级模板
  • 南宁比优建站泰安网约车
  • 建在线教育网站需要多少钱wordpress 产生大量首页
  • 软件开发公司文案手机百度关键词排名 seo网站优化软件
  • 兰州建网站的网站设计文档模板
  • 网站主机是服务器吗网上营销的概念
  • 软件工程师考试seo顾问多少钱
  • 梅州哪里做网站网站正在建设维护中
  • 建站助手网站开发微信授权登录
  • 桐乡 网站建设有关于网站建设的参考文献
  • 廊坊哪里能够做网站手机优化师下载
  • 网站建设大学建设企业网站需要多少钱
  • 网站推广服务算中介吗龙港网
  • 外包做网站的要求怎么写网站设计 价格
  • 智能建站开发哪家网站建设专业
  • 沧州做网站的公司做个公司网站
  • 网站开发私活如何在百度上发广告
  • 应用最广网站建设技术免费软件网站大全
  • 上海公司网站建设以子wordpress菜单标题属性
  • 国内品牌设计公司jsp网站seo优化
  • 正版素材网站单位网页制作
  • 网站发展的方向网站建设里怎么写文章
  • 沈阳建网站公司有哪些做海报的网站
  • 网站设计建设价格建筑设计单位
  • seo的特点是什么怎么做好seo推广
  • 攻击网站的方法廊坊seo排名收费
  • 黑龙江高端网站建设网站一般用什么语言写
  • 口腔医院网站建设做地方分类信息网站需要什么资质吗