深圳餐饮网站建设甘肃做网站哪个平台好

web/2025/10/2 2:26:12/文章来源:
深圳餐饮网站建设,甘肃做网站哪个平台好,国外高校实验室网站建设成果,关键词分类工具一、实验目的 BMCV 提供了一套基于 Sophon AI 芯片优化的机器视觉库#xff0c;通过利用芯片的 TPU 和 VPP模块#xff0c;可以完成色彩空间转换、尺度变换、仿射变换、透射变换、线性变换、画框、JPEG 编解码、BASE64 编解码、NMS、排序、特征匹配等操作。 本实验的目的是…一、实验目的 BMCV 提供了一套基于 Sophon AI 芯片优化的机器视觉库通过利用芯片的 TPU 和 VPP模块可以完成色彩空间转换、尺度变换、仿射变换、透射变换、线性变换、画框、JPEG 编解码、BASE64 编解码、NMS、排序、特征匹配等操作。 本实验的目的是掌握算能的BMCV接口使用方法掌握bmcv_sobelbmcv_canny边缘检测函数的使用方法。 二、实验内容 基于套接字、多线程、同步锁机制实现多媒体文件的收发 发送端Ubuntu的PC机读取文件每1024个字节组成一个包通过TCP报文发送到接收端接收端SE5上启动2个线程线程1接收报文并将报文存入缓存线程2通过缓存读取报文存入文件中要求线程1和线程2之间通过同步锁进行线程同步。 编写代码通过OpenCV读取图片文件并调用BMCV的bmcv_sobel、bmcv_canny函数来实现对图片的边缘检测最后输出检测结果。直接利用OpenCV的边缘检测接口实现边缘检测功能对比OpenCV与BMCV边缘检测所需要的时间 三、开发环境 开发主机Ubuntu 22.04 LTS 硬件算能SE5 本地如果有SE5硬件则可以PC机作为客户端SE5作为服务器端。本地如果没有SE5硬件只有云空间则可以直接将客户端和服务器端都通过云空间实现机在云空间的SE5模拟环境中实现。 四、实验器材 开发主机 云平台 五、实验过程与结论 5.1 BMCV关键函数解析 请参考算能BMCV开发资料《BMCV User Guide》也可以通过以下网址下载 https://doc.sophgo.com/docs/2.7.0/docs_latest_release/bmcv/BMCV_User_Guide_zh.pdf OpenCV的开发资料可参考《OpenCV官方文档》。 算能BMCV提供了bmcv_image_sobel和bmcv_image_canny函数用于进行边缘检测。 bmcv_image_sobel bm_status_t bmcv_image_sobel ( bm_handle_t handle,       //BMCV句柄 bm_image input,           //输入的BMI图片待处理 bm_image output,          //输出的BMI图片处理结果 int dx,                   //x 方向上的差分阶数 int dy)                   //y 方向上的差分阶数 具体函数接口说明如下 1第二个参数和第三个参数图像的格式为bm_imagebm_image 需要外部调用 bmcv_image_creat创建。image 内存可以使用 bm_image_alloc_dev_mem 或者 bm_image_copy_host_to_device来开辟新的内存或者使用 bmcv_image_attach 来 attach 已有的内存。 2dx, dy取值皆为1或0。 其中dx1dy0表示计算X方向的导数检测出的是垂直方向上的边缘dx0dy1表示计算Y方向的导数检测出的是垂直方向上的边缘。 3 Sobel 核的大小必须是-1,1,3,5 或7。其中特殊地如果是-1 则使用3×3 Scharr 滤波器如果是1 则使用3×1 或者1×3 的核。默认值为3。scale 为对求出的差分结果乘以的系数默认值为1。Delta为在输出最终结果之前加上该偏移量默认值为0。通常不需要对scale和Delta进行设置。 bmcv_image_canny bm_status_t bmcv_image_canny ( bm_handle_t handle, bm_image input, bm_image output, float threshold1, float threshold2, int aperture_size 3, bool l2gradient false); 具体函数接口说明如下 1第二个参数和第三个参数图像的格式为bm_imagebm_image 需要外部调用 bmcv_image_create 创建。image 内存可以使用 bm_image_alloc_dev_mem 或者 bm_image_copy_host_to_device来开辟新的内存或者使用 bmcv_image_attach 来 attach 已有的内存。 2threshold1 和threshold2 为双阈值法的第一、第二个阈值。aperture_size 为 其中Sobel 核的大小目前仅支持3。l2gradient 表示是否使用L2 范数来求图像梯度, 默认值为false默认为由L1范数来求解图像梯度。 注意BMCV的函数接口都是基于BMI格式进行图像处理。如上面的函数说明其中第二个参数和第三个参数都是基于bm_image格式的。因此需要首先通过OpenCV读取图片并将图片格式转换为BMI格式后才可以调用bmcv_image_sobel和bmcv_image_canny函数进行边缘检测。 本实验及实验5实验6实验7中使用BMCV相关函数的基本处理流程如下图所示仅需调整红框模块中所调用的API即可实现不同实验功能 图4-1 实验流程框图 首先本实例为了利用BMCV接口需要引用相关的BMCV相关头文件 #include bmcv_api.h 创建Mat类对象并读取图片数据 # 创建OpenCV类对象 cv::Mat Input,Out; # 读取第二个命令行参数存入mat对象中读取数据 Input cv::imread(argv[1], 0); 注意这里OpenCV类读取到的图片文件输出的格式是MAT格式而BMCV处理的图片是bm_image格式即BMCV对象。因此我们需要先创建BMCV对象然后将OpenCV类读取到的图片通过toBMI接口转换为BMCV对象。 # 创建BMCV对象 bm_image input, output; bm_image_create(handle,height,width,FORMAT_GRAY,DATA_TYPE_EXT_1N_BYTE,input); # 以下是c智能指针划分一块内存区域并获取其信息 std::unique_ptrunsigned char[] src_data(new unsigned char[width * height]); std::unique_ptrunsigned char[] res_data(new unsigned char[width * height]); BMCV对象操作要求在对象创建后需要为该对象申请内部管理内存。如下函数所示 bm_image_alloc_contiguous_mem(1, input); bm_image_alloc_contiguous_mem(1, output); 也可以通过bm_image_alloc_dev_mem(input)函数申请内存 bm_image_alloc_dev_mem(input) bm_image_alloc_dev_mem(output); 然后通过toBMI函数将OpenCV读取的图片mat类数据转化为BMCV类数据再调用bmcv_image_sobel函数进行处理 cv::bmcv::toBMI(Input,input); # Sobel边缘检测 bmcv_image_sobel(handle, input, output, 0, 1) 需要注意的是这里用了toBMI函数实际内部做了一个内存同步的操作。也就是OpenCV读取的mat格式图片实际处于系统内存中通过toBMI转换后同步到设备内存中。这里也可以通过bm_image_copy_host_to_device函数完成内存的同步。具体见上述的《BMCV User Guide》110页中的示例代码所采用的方法。 将处理结果转化为mat数据格式保存 cv::bmcv::toMAT(output, Out); cv::imwrite(out.jpg, Out); 销毁内存 bm_image_free_contiguous_mem(1, input); bm_image_free_contiguous_mem(1, output); bm_image_destroy(input); bm_image_destroy(output); bm_dev_free(handle); 综上我们可以得到利用BMCV sobel函数进行图像边缘检测的关键代码如下 #include iostream #include vector #include bmcv_api.h #include common.h #include stdio.h #include stdlib.h #include string.h #include memoryusing namespace cv; using namespace std;int main(int argc, char *argv[]) { bm_handle_t handle; //获取句柄 bm_dev_request(handle, 0);int width 600; //定义图片数据 int height 600;cv::Mat Input,Out,Test; Input cv::imread(argv[1], 0); //opencv读取图片通过命令行参数传入// 智能指针获取分配内存数据 std::unique_ptrunsigned char[] src_data(new unsigned char[width * height]);std::unique_ptrunsigned char[] res_data(new unsigned char[width * height]);// bmcv处理 bm_image input, output;bm_image_create(handle,height,width,FORMAT_GRAY, DATA_TYPE_EXT_1N_BYTE,input);bm_image_alloc_contiguous_mem(1, input, 1); // 分配device memory unsigned char * input_img_data src_data.get();bm_image_copy_host_to_device(input, (void **)input_img_data);bm_image_create(handle,height,width,FORMAT_GRAY,DATA_TYPE_EXT_1N_BYTE,output);bm_image_alloc_contiguous_mem(1, output, 1); cv::bmcv::toBMI(Input,input); //自动进行内存同步// bmcv图像处理caif (BM_SUCCESS ! bmcv_image_sobel(handle, input, output, 0, 1)) {std::cout bmcv sobel error !!! std::endl;bm_image_destroy(input);bm_image_destroy(output);bm_dev_free(handle);return -1;}// 将输出结果转成mat数据并保存 cv::bmcv::toMAT(output, Out);cv::imwrite(out.jpg, Out);bm_image_free_contiguous_mem(1, input);bm_image_free_contiguous_mem(1, output);bm_image_destroy(input);bm_image_destroy(output);bm_dev_free(handle);return 0; } 如果采用bmcv_image_canny函数进行边缘检测只需要将上述代码中的bmcv_image_sobel函数改为bmcv_image_canny函数即可 // bmcv图像处理canny if (BM_SUCCESS ! bmcv_image_canny(handle, input, output, 0, 200)) {td::cout bmcv canny error !!! std::endl;bm_image_destroy(input);bm_image_destroy(output);bm_dev_free(handle);exit(-1); } 编写makfile文件 DEBUG ? 0 PRODUCTFORM ? soc BM_MEDIA_ION ? 0INSTALL_DIR ? release//注意这个地方一定要根据自己的目录路径进行设置 top_dir :../../..ifeq ($(PRODUCTFORM),x86) # pcie modeCROSS_CC_PREFIX x86_64-linux- else # pcie_arm64 and soc modeCROSS_CC_PREFIX aarch64-linux-gnu- endifCC $(CROSS_CC_PREFIX)gcc CXX $(CROSS_CC_PREFIX)gCPPFLAGS : -stdgnu11 -fPIC -Wall -Wl,--fatal-warning ifeq ($(DEBUG), 0)CPPFLAGS -O2 elseCPPFLAGS -g endif# NATIVE API SDK NATIVE_SDK_HEADERS:-I$(top_dir)/include/decode NATIVE_SDK_LDFLAGS:-L$(top_dir)/lib/decode/${PRODUCTFORM} NATIVE_SDK_LDLIBS :-lbmion -lbmjpulite -lbmjpuapi -lbmvpulite -lbmvpuapi -lbmvideo -lbmvppapi -lyuv# FFMPEG SDK FF_SDK_HEADERS : -I$(top_dir)/include/ffmpeg FF_SDK_LDFLAGS : -L$(top_dir)/lib/ffmpeg/$(PRODUCTFORM) FF_SDK_LDLIBS : -lavcodec -lavformat -lavutil -lswresample -lswscale# OpenCV SDK OCV_SDK_HEADERS : -I$(top_dir)/include/opencv/opencv4 OCV_SDK_LDFLAGS : -L$(top_dir)/lib/opencv/$(PRODUCTFORM) OCV_SDK_LDLIBS : -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -lopencv_videoio# BMCV SDK BMCV_SDK_HEADERS : -I$(top_dir)/include/bmlib BMCV_SDK_LDFLAGS : -L$(top_dir)/lib/bmnn/$(PRODUCTFORM) ifeq (${PRODUCTFORM}, x86) BMCV_SDK_LDFLAGS : -L$(top_dir)/lib/bmnn/pcie endif BMCV_SDK_LDLIBS : -lbmcv -lbmlibCPPFLAGS $(NATIVE_SDK_HEADERS) $(FF_SDK_HEADERS) $(OCV_SDK_HEADERS) $(BMCV_SDK_HEADERS) LDFLAGS : $(NATIVE_SDK_LDFLAGS) $(FF_SDK_LDFLAGS) $(OCV_SDK_LDFLAGS)LDLIBS : $(NATIVE_SDK_LDLIBS) $(FF_SDK_LDLIBS) $(OCV_SDK_LDLIBS) $(BMCV_SDK_LDLIBS) -lpthread -lstdcTARGETbmcv_sobel MAKEFILEMakefile ALLOBJS*.o ALLDEPS*.dep RMrm -rf CPcp -fSOURCES : bmcv_sobel.cppOBJECTPATHS:$(patsubst %.cpp,%.o,$(SOURCES)).phony: all cleanall: $(TARGET)$(TARGET): $(OBJECTPATHS)$(CC) -o $ $(OBJECTPATHS) $(LDFLAGS) $(LDLIBS)install: $(TARGET)install -d $(INSTALL_DIR)/bininstall $(TARGET) $(INSTALL_DIR)/binuninstall:$(RM) $(INSTALL_DIR)/bin/$(TARGET) clean:$(RM) $(TARGET)$(RM) $(ALLDEPS)$(RM) $(ALLOBJS)bmcv_sobel.o : bmcv_sobel.cpp $(MAKEFILE)$(CXX) $(CPPFLAGS) -c $ -o $ -MD -MF $(:.o.dep) LDLIBS : $(NATIVE_SDK_LDLIBS) $(FF_SDK_LDLIBS) $(OCV_SDK_LDLIBS) $(BMCV_SDK_LDLIBS) -lpthread -lstdcTARGETbmcv_sobel MAKEFILEMakefile ALLOBJS*.o ALLDEPS*.dep RMrm -rf CPcp -fSOURCES : bmcv_sobel.cppOBJECTPATHS:$(patsubst %.cpp,%.o,$(SOURCES)).phony: all cleanall: $(TARGET)$(TARGET): $(OBJECTPATHS)$(CC) -o $ $(OBJECTPATHS) $(LDFLAGS) $(LDLIBS)install: $(TARGET)install -d $(INSTALL_DIR)/bininstall $(TARGET) $(INSTALL_DIR)/binuninstall:$(RM) $(INSTALL_DIR)/bin/$(TARGET) clean:$(RM) $(TARGET)$(RM) $(ALLDEPS)$(RM) $(ALLOBJS)bmcv_sobel.o : bmcv_sobel.cpp $(MAKEFILE)$(CXX) $(CPPFLAGS) -c $ -o $ -MD -MF $(:.o.dep) 5.2 BMCV执行结果 向云平台或SE5上传待检测的图片并执行如下代码 ./bmcv_sobel greycat.jpeg bmcv 运行程序后对同一张图片进行处理所得出的sobel和canny边缘检测的两个结果 Sobel Canny 如上图所示两种边缘检测都能大概检测出图像边缘但精细程度不同。在实际应用时可选择自己所适合的方式选择合适的边缘检测方式。 5.3 OpenCV关键函数解析 OpenCV也提供了Sobel和Canny边缘检测算子具体函数原型如下 void cv::Canny(InputArray image,OutputArray edges,double threshold1,double threshold2,int apertureSize 3,bool L2gradient false )void cv::Sobel(InputArray src,OutputArray dst, //输出图像与输入图像src具有相同的尺寸和通道数数据类型由第三个参数ddepth控制。int ddepth, // ddepth输出图像的数据类型深度, 为-1时输出图像的数据类型自动选择。int dx,int dy,int ksize 3,double scale 1,double delta 0,int borderType BORDER_DEFAULT) //像素外推法选择标志默认为//BORDER_DEFAULT表示不包含边界值倒序填充。同名参数的含义与BMCV中参数含义相同。OpenCV下不需要进行BMI转换直接可以将读取到的MAT格式的图片通过sobel 和Canny接口进行处理。如下图所示 //头文件 #include opencv2/core.hpp #include opencv2/imgcodecs.hpp #include opencv2/imgproc/imgproc.hpp #include opencv2/highgui/highgui.hpp .... //关键代码 cv::Mat srcImage cv::imread(argv[1], 1); cv::Mat grayImage; cv::Mat srcImage1 srcImage.clone(); cvtColor(srcImage, grayImage, COLOR_BGR2GRAY); Mat dstImage, edge; dstImage.create(srcImage1.size(), srcImage1.type()); dstImage Scalar::all(0); srcImage1.copyTo(dstImage, edge); 5.4 硬件加速性能对比 此外在算能云平台上基于BMCV的sobel函数因为使用了硬件加速所以可以提升速率。 为验证执行程序所需的时间须在运行时通过time命令来实现如下图所示 第一张图为用OpenCV的sobel函数所需时间第二张图为用bmcv的sobel函数时所需的时间。经硬件加速后程序所需的运行时间明显减少。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生态旅游网站的建设wordpress菜单无效

在C语言编程的旅程中,你可能会遇到一个令人困惑的情况:使用getchar()函数获取字符时,那讨厌的回车符(\n)又是如何产生和处理的呢?本文将为你揭示这个问题,并分享几种消除回车符困扰的经验。 一…

平泉建设局网站免费网站服务

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 给我们一个矩阵,每次都把每行中的最大元素拿出来删掉,再把每次删除的元素里最大的元素拿出来加到结果里&…

长春一般建一个网站需要多少钱建设网站知乎

转载自 JVM运行时区域详解我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。 线程不共享区域 每个线程的数据…

企业网站建设的实践意义信息流优化师

1.jQuery对象就是通过jQuery包装DOM对象后产生的对象。2.jQuery对象和DOM对象的相互转换。良好的书写风格&#xff1a;var $input$("input")jQuery获取的对象在变量前面加上$。<1>jQUery对象转成DOM对象,两种方法&#xff1a;[index]和get(index)a:var $cr$(&q…

企业级网站开发需求分析上海网站建设公司推荐排名

长篇小说:我正在为我的函数编程类做一个项目,我想到在Lisp中为Mario AI competition.我正在研究从Java调用LISP代码的框架/库/方式,甚至更好的LISP Java互通信。我看过Jacol但它是旧的,对我来说也不是很好。到目前为止,我的最佳选择是:Jatha.它真的很整洁,虽然一些Lisp构造还没…

朋友圈网站广告怎么做挂网站需要什么服务器

C之单例模式 前言介绍1、单例模式是什么&#xff1f;1.1 实现单例模式的三个要点1.2 单例模式分类 2. 懒汉式2.1 懒汉实现&#xff1a;基础方法2.2 懒汉实现&#xff1a;基于单锁2.3 懒汉实现&#xff1a;基于双重检测锁2.4 懒汉实现&#xff1a;基于双重检测锁和资源管理2.4.1…

做防水怎么注册网站高校网站建设情况报告范文

03:10 按照视频里的顺序 我们从第6个网站开始倒数 点击本行文字或下方链接 进入查看 6大网站地址 网址查看链接&#xff1a; http://www.uzing.net/community_show-1962-48-48-35.html 06 Tectures Wood Fence 001 | 3D TEXTURES 简介&#xff1a;最大的纹理网站之一&#x…

通州建设局网站网站开发语言入门

Nodejs简介 Node.js 是一个开源和跨平台的 JavaScript 运行时环境。 它几乎是任何类型项目的流行工具&#xff01; &#xff08; 运行环境&#xff0c;是不是很熟悉&#xff0c;对。就是 java JRE&#xff0c;Java 运行时环境&#xff09; Node.js 在浏览器之外运行 V8 Java…

网站建设赶集网wordpress免费自定义模板装修教程

PID算法的通俗讲解 PID算法的江湖地位&#xff1f; PID算法在控制领域是非常常见的算法&#xff0c;小到控制温度&#xff0c;大到控制飞机的飞行姿态&#xff0c;基本上算是在控制领域万能的算法。 关于PID算法的生活小故事&#xff1a; 假设一辆慢点量的车&#xff0c;跑着跑…

门户网站的区别新年祝福语在线制作网站

一. 准备工作1.下载安装sts(springsource推荐使用), 毕竟人家的框架用他自家的ide是最好的,当然sts也是基本eclipse的, 下载地址: http://www.springsource.org/downloads/sts-ggts2.下载安装gradle, spring 源码构建加入了gradle支持. gradle下载: http://www.gradle.org/down…

中国城乡建中国城乡建设部网站sem和seo是什么

文章目录 &#x1f680;&#x1f680;&#x1f680;前言一、1️⃣ Orange Pi AIpro开发板相关介绍1.1 &#x1f393; 核心配置1.2 ✨开发板接口详情图1.3 ⭐️开箱展示 二、2️⃣配置开发板详细教程2.1 &#x1f393; 烧录镜像系统2.2 ✨配置网络2.3 ⭐️使用SSH连接主板 三、…

怎么做车载mp3下载网站网站备案可以更改吗

作为风变推出的python课程的一名学员&#xff0c;很幸运能与风变相遇&#xff0c;更庆幸自己选择学习python&#xff0c;我学习的是python基础课程和爬虫精进课程&#xff0c;目前已经学完了python基础课程&#xff0c;不得不说对我的感触很深&#xff0c;非常想要继续学下去&a…

网站开发用什么电脑wordpress 加ico

这是开博的第一篇&#xff0c;还要废话一下。我写的很多内容都是网上找资料然后自己总结出来的&#xff0c;原出处已经很难找到了&#xff0c;所以不会标出引用的内容。如果侵犯到您的版权&#xff0c;请和我联系&#xff0c;我会删改相关的内容。 cloudblob 是azure blob的一个…

企业网站建设 阿里云湖南响应式网站方案

目录 1.解决雪崩的方式有4种&#xff1a; 1.1.2超时处理&#xff1a; 1.1.3仓壁模式 1.1.4.断路器 1.1.5.限流 1.1.6.总结 1.2.服务保护技术对比 1.3.Sentinel介绍和安装 1.3.1.初识Sentinel 1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制 2.1.簇点链路 …

东莞seo建站公司大连建设网查询水电费

IC认证是什么&#xff1f; IC是加拿大工业部Industry Canada的简称&#xff0c;作为政府机构&#xff0c;负责电子电器产品进入加拿大市场的认证事务。与美国的FCC相似&#xff0c;IC目前只在电磁干扰上做限制。一般规定&#xff1a;仅限制EMI&#xff0c;认证方式也与FCC相同…

建设银行网站维护淮南市住房与城乡建设部网站

Deep Knowledge-Aware Network for News Recommendation 类别&#xff1a;依次学习 首先使用知识图谱特征学习得到实体向量和关系向量&#xff0c;然后将这些低维向量引入推荐系统&#xff0c;学习得到用户向量和物品向量。 [论文下载链接]https://arxiv.org/abs/1801.08284…

正规的常州网站推广济南百度竞价开户

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

响应式企业展示型网站长春网站排名优化公司

1.jmeter的并发执行 并发执行&#xff1a;多个线程同时执行&#xff0c;不能确定谁先结束 以上案例中http请求里面没有写任何内容&#xff0c;只是为了看这个并发执行的效果 2.jmeter的顺序执行 顺序执行&#xff1a;多个线程顺序执行 再测试计划中勾选“独立运行每个线程组…

郑州网站建设与制作wordpress友情链接激活

Vue2.0 介绍 :::warning 注意 在学习 Vue 之前建议你已经学会了 HTML5、CSS3、Javascript、ES6、ESLint、Webpack、Sass、前端工程化等基础。否则你学习起来可能会有点吃力。 ::: 在我们传统模式中&#xff0c;都是通过 HTML5、CSS3、JavaScript 进行页面开发&#xff0c;但是…

汕头 网站设计权重高的网站是几

文章目录 概述经典算法自回归模型&#xff08;Autoregressive model&#xff09;变分自编码器&#xff08;VAE&#xff09;生成对抗网络&#xff08;GAN&#xff09;扩散模型&#xff08;Diffusion model&#xff09;总结 应用 概述 深度生成模型是一类使用深度学习技术构建的…