部署yolo到k230教程
训练:K230 借助 AICube部署AI 视觉模型 YOLO等教程_嘉楠 ai cube多标签分类-CSDN博客K230模型训练ai cube报错生成部署文件异常_aicube部署模型显示生成部署文件异常-CSDN博客
部署:
# 导入必要的库和模块
import os
import ujson # 超快的JSON解析库
import aicube # AI加速库
from media.sensor import * # 摄像头传感器相关
from media.display import * # 显示相关
from media.media import * # 媒体处理基础库
from time import * # 时间相关
import nncase_runtime as nn # 神经网络运行时库
import ulab.numpy as np # 嵌入式优化的numpy替代库
import time
import utime # 更精确的时间库
import image # 图像处理
import random
import gc # 垃圾回收
import utime# 显示模式配置(LCD或HDMI)
display_mode="lcd"
if display_mode=="lcd":DISPLAY_WIDTH = ALIGN_UP(800, 16) # 对齐到16的倍数(硬件要求)DISPLAY_HEIGHT = 480
else:DISPLAY_WIDTH = ALIGN_UP(1920, 16)DISPLAY_HEIGHT = 1080# RGB888输出分辨率配置
OUT_RGB888P_WIDTH = ALIGN_UP(1080, 16)
OUT_RGB888P_HEIGH = 720# 预定义的80种颜色(ARGB格式),用于不同类别的检测框显示
# 颜色盘
color_four = [(255, 220, 20, 60), (255, 119, 11, 32), (255, 0, 0, 142), (255, 0, 0, 230),(255, 106, 0, 228), (255, 0, 60, 100), (255, 0, 80, 100), (255, 0, 0, 70),(255, 0, 0, 192), (255, 250, 170, 30), (255, 100, 170, 30), (255, 220, 220, 0),(255, 175, 116, 175), (255, 250, 0, 30), (255, 165, 42, 42), (255, 255, 77, 255),(255, 0, 226, 252), (255, 182, 182, 255), (255, 0, 82, 0), (255, 120, 166, 157),(255, 110, 76, 0), (255, 174, 57, 255), (255, 199, 100, 0), (255, 72, 0, 118),(255, 255, 179, 240), (255, 0, 125, 92), (255, 209, 0, 151), (255, 188, 208, 182),(255, 0, 220, 176), (255, 255, 99, 164), (255, 92, 0, 73), (255, 133, 129, 255),(255, 78, 180, 255), (255, 0, 228, 0), (255, 174, 255, 243), (255, 45, 89, 255),(255, 134, 134, 103), (255, 145, 148, 174), (255, 255, 208, 186),(255, 197, 226, 255), (255, 171, 134, 1), (255, 109, 63, 54), (255, 207, 138, 255),(255, 151, 0, 95), (255, 9, 80, 61), (255, 84, 105, 51), (255, 74, 65, 105),(255, 166, 196, 102), (255, 208, 195, 210), (255, 255, 109, 65), (255, 0, 143, 149),(255, 179, 0, 194), (255, 209, 99, 106), (255, 5, 121, 0), (255, 227, 255, 205),(255, 147, 186, 208), (255, 153, 69, 1), (255, 3, 95, 161), (255, 163, 255, 0),(255, 119, 0, 170), (255, 0, 182, 199), (255, 0, 165, 120), (255, 183, 130, 88),(255, 95, 32, 0), (255, 130, 114, 135), (255, 110, 129, 133), (255, 166, 74, 118),(255, 219, 142, 185), (255, 79, 210, 114), (255, 178, 90, 62), (255, 65, 70, 15),(255, 127, 167, 115), (255, 59, 105, 106), (255, 142, 108, 45), (255, 196, 172, 0),(255, 95, 54, 80), (255, 128, 76, 255), (255, 201, 57, 1), (255, 246, 0, 122),(255, 191, 162, 208)]# 配置文件路径
root_path="/sdcard/mp_deployment_source/"
config_path=root_path+"deploy_config.json"
deploy_conf={}
debug_mode=1 # 调试模式开关# 性能分析工具类(上下文管理器)
class ScopedTiming:def __init__(self, info="", enable_profile=True):self.info = infoself.enable_profile = enable_profiledef __enter__(self):if self.enable_profile:self.start_time = time.time_ns()return selfdef __exit__(self, exc_type, exc_value, traceback):if self.enable_profile:elapsed_time = time.time_ns() - self.start_timeprint(f"{self.info} took {elapsed_time / 1000000:.2f} ms")# 读取部署配置文件
def read_deploy_config(config_path):with open(config_path, 'r') as json_file:try:config = ujson.load(json_file) # 使用ujson快速解析except ValueError as e:print("JSON 解析错误:", e)return config# 主检测函数
def detection():print("det_infer start")# 加载部署配置deploy_conf=read_deploy_config(config_path)# 解析配置参数kmodel_name=deploy_conf["kmodel_path"] # 模型文件路径labels=deploy_conf["categories"] # 类别标签confidence_threshold= deploy_conf["confidence_threshold"] # 置信度阈值nms_threshold = deploy_conf["nms_threshold"] # NMS阈值img_size=deploy_conf["img_size"] # 模型输入尺寸num_classes=deploy_conf["num_classes"] # 类别数量nms_option = deploy_conf["nms_option"] # NMS选项model_type = deploy_conf["model_type"] # 模型类型(AnchorBaseDet等)# 锚点配置(如果是基于锚点的检测模型)if model_type == "AnchorBaseDet":anchors = deploy_conf["anchors"][0] + deploy_conf["anchors"][1] + deploy_conf["anchors"][2]# 图像预处理参数计算kmodel_frame_size = img_size # 模型输入尺寸frame_size = [OUT_RGB888P_WIDTH,OUT_RGB888P_HEIGH] # 实际输入尺寸strides = [8,16,32] # 特征图步长# 计算保持长宽比的缩放参数ori_w = OUT_RGB888P_WIDTHori_h = OUT_RGB888P_HEIGHwidth, height = kmodel_frame_sizeratiow = width / ori_wratioh = height / ori_hratio = min(ratiow, ratioh) # 选择较小比例保持长宽比new_w = int(ratio * ori_w)new_h = int(ratio * ori_h)# 计算填充参数(居中填充)dw = (width - new_w) / 2dh = (height - new_h) / 2top = int(round(dh - 0.1))bottom = int(round(dh + 0.1))left = int(round(dw - 0.1))right = int(round(dw - 0.1))# 初始化神经网络推理组件kpu = nn.kpu() # 创建KPU(神经网络加速器)实例ai2d = nn.ai2d() # 创建AI2D(图像预处理加速器)实例# 加载kmodel模型文件kpu.load_kmodel(root_path+kmodel_name)# 配置AI2D预处理参数ai2d.set_dtype(nn.ai2d_format.NCHW_FMT, nn.ai2d_format.NCHW_FMT, np.uint8, np.uint8)ai2d.set_pad_param(True, [0,0,0,0,top,bottom,left,right], 0, [114,114,114]) # 填充灰色ai2d.set_resize_param(True, nn.interp_method.tf_bilinear, nn.interp_mode.half_pixel)# 构建AI2D预处理流水线ai2d_builder = ai2d.build([1,3,OUT_RGB888P_HEIGH,OUT_RGB888P_WIDTH], [1,3,height,width])# 初始化摄像头传感器sensor = Sensor(id = 1)sensor.reset()# 摄像头参数配置sensor.set_hmirror(False) # 水平镜像关闭sensor.set_vflip(False) # 垂直翻转关闭# 配置显示通道(YUV420格式)sensor.set_framesize(DISPLAY_WIDTH, DISPLAY_HEIGHT)sensor.set_pixformat(PIXEL_FORMAT_YUV_SEMIPLANAR_420)# 配置AI处理通道(RGB888格式)sensor.set_framesize(OUT_RGB888P_WIDTH, OUT_RGB888P_HEIGH, chn=CAM_CHN_ID_2)sensor.set_pixformat(PIXEL_FORMAT_RGB_888_PLANAR, chn=CAM_CHN_ID_2)# 绑定显示层sensor_bind_info = sensor.bind_info(x=0, y=0, chn=CAM_CHN_ID_0)Display.bind_layer(**sensor_bind_info, layer=Display.LAYER_VIDEO1)# 初始化显示设备if display_mode=="lcd":Display.init(Display.ST7701, to_ide=True) # 7寸LCD屏else:Display.init(Display.LT9611, to_ide=True) # HDMI输出# 创建OSD层用于绘制检测结果osd_img = image.Image(DISPLAY_WIDTH, DISPLAY_HEIGHT, image.ARGB8888)try:MediaManager.init() # 初始化媒体系统sensor.run() # 启动摄像头# 初始化AI2D输入输出张量ai2d_input_tensor = Noneai2d_output_tensor = nn.from_numpy(np.ones((1,3,width,height), dtype=np.uint8))# 主循环while True:with ScopedTiming("total", debug_mode > 0):# 捕获图像rgb888p_img = sensor.snapshot(chn=CAM_CHN_ID_2)if rgb888p_img.format() == image.RGBP888:# 转换为numpy格式ai2d_input = rgb888p_img.to_numpy_ref()ai2d_input_tensor = nn.from_numpy(ai2d_input)# 执行预处理(缩放+填充)ai2d_builder.run(ai2d_input_tensor, ai2d_output_tensor)# 模型推理kpu.set_input_tensor(0, ai2d_output_tensor)kpu.run()# 获取输出results = []for i in range(kpu.outputs_size()):out_data = kpu.get_output_tensor(i)result = out_data.to_numpy().flatten()results.append(result)del out_data # 及时释放内存gc.collect() # 垃圾回收# 后处理if model_type == "AnchorBaseDet":det_boxes = aicube.anchorbasedet_post_process(...)elif model_type == "GFLDet":det_boxes = aicube.gfldet_post_process(...)else:det_boxes = aicube.anchorfreedet_post_process(...)# 清空OSD层并绘制结果osd_img.clear()if det_boxes:for box in det_boxes:# 坐标转换到显示尺寸x1, y1, x2, y2 = box[2], box[3], box[4], box[5]w = (x2 - x1) * DISPLAY_WIDTH / OUT_RGB888P_WIDTHh = (y2 - y1) * DISPLAY_HEIGHT / OUT_RGB888P_HEIGH# 绘制矩形框osd_img.draw_rectangle(int(x1 * DISPLAY_WIDTH / OUT_RGB888P_WIDTH),int(y1 * DISPLAY_HEIGHT / OUT_RGB888P_HEIGH),int(w), int(h),color=color_four[box[0]][1:] # 根据类别选择颜色)# 显示OSD层Display.show_image(osd_img, 0, 0, Display.LAYER_OSD3)gc.collect()rgb888p_img = None # 释放图像引用except Exception as e:print(f"运行异常: {e}")finally:# 资源清理os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)del ai2d_input_tensordel ai2d_output_tensorsensor.stop() # 停止摄像头Display.deinit() # 关闭显示MediaManager.deinit()# 释放媒体资源gc.collect()time.sleep(1)nn.shrink_memory_pool() # 释放神经网络内存print("det_infer end")return 0if __name__=="__main__":detection()
相关文章:
部署yolo到k230教程
训练:K230 借助 AICube部署AI 视觉模型 YOLO等教程_嘉楠 ai cube多标签分类-CSDN博客K230模型训练ai cube报错生成部署文件异常_aicube部署模型显示生成部署文件异常-CSDN博客 部署: # 导入必要的库和模块 import os import ujson # 超快的JS…...
【高频考点精讲】第三方库安全审计:如何避免引入带漏洞的npm包
大家好,我是全栈老李。今天咱们聊一个前端工程师必须掌握的生存技能——如何避免把带漏洞的npm包引入项目。这可不是危言耸听,去年某大厂就因为在生产环境用了有漏洞的lodash版本,被黑客利用原型污染漏洞直接攻破后台系统。 为什么npm包会变成"定时炸弹"? npm生…...
【后端】主从单体数据库故障自动切换,容灾与高可用
在现代企业级应用中,数据库的高可用性和容灾能力是保障业务连续性的关键。尤其是在一些对稳定性要求较高的业务场景中,当主数据库发生故障时,如何快速切换到备用数据库并确保业务不受影响,成为了一个重要课题。本文将介绍一种基于 SpringBoot 和 Druid 数据源的解决方案,通…...
AI编程案例拆解|基于机器学习XX评分系统-后端篇
文章目录 5. 数据集生成使用KIMI生成数据集 6. 后端部分设计使用DeepSeek生成神经网络算法设计初始化项目在Cursor中生成并提问前后端交互运行后端命令 注意事项 关注不迷路,励志拆解100个AI编程、AI智能体的落地应用案例为了用户的隐私性,关键信息会全部…...
数据库设置外键的作用
数据库外键(Foreign Key)是关系型数据库中用于建立表与表之间关联关系的重要约束,其核心作用是确保数据的一致性、完整性和关联性。以下是外键的主要作用及相关说明: 1. 建立表间关联关系 外键通过引用另一张表的主键࿰…...
从基础到实战的量化交易全流程学习:1.1 量化交易本质与行业生态
从基础到实战的量化交易全流程学习:1.1 量化交易本质与行业生态 在金融市场数字化转型的浪潮中,量化交易凭借数据驱动的科学性与自动化执行的高效性,成为连接金融理论与技术实践的核心领域。本文作为系列开篇,将从本质解析、行业生…...
路由交换网络专题 | 第八章 | GVRP配置 | 端口安全 | 端口隔离 | Mux-VLAN | Hybrid
拓扑图 (1)通过 LSW1 交换机配置 GVRP 协议同步 VLAN 信息到所有接入层设备。 基于 GARP 机制:GVRP 是通用属性注册协议 GARP(Generic Attribute Registration Protocol)的一种应用,用于注册和注销 VLAN 属…...
重定向和语言级缓冲区【Linux操作系统】
文章目录 重定向重定向的原理重定向系统调用接口进程替换不会影响重定向bash命令行中输入,输出,追加重定向的区别输出重定向输入重定向追加重定向命令行中只支持向文件描述符为0,1,2的标准流进行>,>>…...
Channel如何安全地尝试发送数据
在 Go 语言中,无法直接检查 channel 是否关闭(没有类似 IsClosed(ch) 的方法),但可以通过 非阻塞发送 或 select 语句 安全地尝试发送数据,避免向已关闭的 channel 发送数据导致 panic。以下是具体实现方式:…...
MH2103 MH22D3系列的JTAG/SWD复用功能和引脚映射,IO初始化的关键点
MH21xx和MH22xx内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接 口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚)。 ● JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。 ● 串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟࿰…...
Tortoise-ORM级联查询与预加载性能优化
title: Tortoise-ORM级联查询与预加载性能优化 date: 2025/04/26 12:25:42 updated: 2025/04/26 12:25:42 author: cmdragon excerpt: Tortoise-ORM通过异步方式实现级联查询与预加载机制,显著提升API性能。模型关联关系基础中,定义一对多关系如作者与文章。级联查询通过s…...
【C++11】列表初始化
📝前言: 这篇文章我们来讲讲C11引入的列表初始化{},注意这不是构造函数里的初始化列表!!! 在阅读文章之前,请你记住一句重点:万物皆可{}初始化 🎬个人简介:努…...
基于Cherry Studio + DeepSeek 搭建本地私有知识库!
在当今数字化时代,知识管理变得越来越重要。无论是个人还是企业,都希望能够高效地存储、管理和检索知识。而借助 AI 技术,我们可以实现更加智能的知识库系统。本文将详细介绍如何使用 Cherry Studio 和 DeepSeek 搭建本地私有知识库ÿ…...
栈相关算法题解题思路与代码实现分享
目录 前言 一、最小栈(LeetCode 155) 题目描述 解题思路 代码实现(C) 代码解释 二、栈的压入、弹出序列(剑指 Offer JZ31) 题目描述 解题思路 代码实现(C) 代码解释 总结…...
MongoDB Atlas与MongoDB连接MCP服务器的区别解析
MongoDB Atlas作为全托管的云数据库服务,与本地自建MongoDB实例在连接MCP(Model Context Protocol)服务器时存在显著差异。以下从配置方式、安全机制、功能特性三个维度对比两者的区别: 连接配置差异 • 本地MongoDB:…...
服务器传输数据存储数据建议 传输慢的原因
一、JSON存储的局限性 1. 性能瓶颈 全量读写:JSON文件通常需要整体加载到内存中才能操作,当数据量大时(如几百MB),I/O延迟和内存占用会显著增加。 无索引机制:查找数据需要遍历所有条目(时间复…...
【大模型】Coze AI 智能体工作流从配置到使用实战详解
目录 一、前言 二、工作流介绍 2.1 什么是工作流 2.2 工作流与对话流 2.2.1 两者区别 2.3 工作流节点介绍 2.3.1 工作流节点说明 2.3.2 开始节点与结束节点 2.4 工作流入口 2.4.1 自定义智能体入口 2.4.2 从资源库新增工作流 2.5 工作流使用限制 三、工作流配置与使…...
Java后端开发——分层解耦详解
文章目录 一、三层架构1.1 概述1.2 具体实现方法 二、分层解耦2.1 以往问题2.2 概念解释2.3 解耦思路 三、Spring核心:IOC & DI3.1 快速入门3.2 IOC(控制反转)详解3.3 DI(依赖注入)详解 注入方式 标签:…...
论文如何降低AIGC?(完整指南版)
最近一段时间,关于论文AIGC率太高怎么办的问题,真的是知乎、小红书、B站到处都是! 尤其是今年知网一升级,连纯手写的内容都能给你标疑似AIGC,简直离谱啊兄弟姐妹们😭! 那论文到底怎么降低AIGC…...
【LCMM】纵向轨迹模型,组轨迹模型
latent_class_mixed_models 基础知识 增长混合模型(GMM)和潜在类别增长模型(LCGA)的核心区别确实主要在于是否允许类别内存在随机效应,但两者的差异还涉及模型灵活性、假设和应用场景等方面。以下是详细对比…...
Flask + ajax上传文件(三)--图片上传与OCR识别
本教程将详细介绍如何使用Flask框架构建一个图片上传与文字识别(OCR)的Web应用。我们将使用EasyOCR作为OCR引擎,实现一个支持中文和英文识别的完整应用。 环境准备 首先,确保你已经安装了Python 3.7+环境,然后安装必要的依赖库: pip install flask easyocr pillow werkz…...
观察者模式 (Observer Pattern)
观察者模式(Observer Pattern)是一种行为型设计模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象的状态发生变化时,会自动通知所有观察者对象,使它们能够自动更新自己的状态。 一、基础 1. 意图 核心目的:定义对象间的一种一对…...
【Leetcode 每日一题】2444. 统计定界子数组的数目
问题背景 给你一个整数数组 n u m s nums nums 和两个整数 m i n K minK minK 以及 m a x K maxK maxK。 n u m s nums nums的定界子数组是满足下述条件的一个子数组: 子数组中的 最小值 等于 m i n K minK minK。子数组中的 最大值 等于 m a x K maxK maxK…...
LeetCode热题100——70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 1 阶2 阶 示例 2: …...
黑马Java基础笔记-4
方法 什么是方法 方法是程序中最小的执行单元。 形参和实参 调用 直接调用 getSum(10,20,30);赋值调用 int sum getSum(10,20,30);输出调用 System.out.println(getSum(10,20,30));方法的重载 在同一个类中,定义了多个同名的方法,这些同名的方法…...
【Python】Python中的浅拷贝和深拷贝
在Python中,浅拷贝(shallow copy)和深拷贝(deep copy)是两种不同的对象复制方式,它们在复制对象时的行为有所不同: 浅拷贝(Shallow Copy) 浅拷贝是创建一个新对象&…...
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
作者:来自 Elastic Neha Saini 在这篇博客中,我们将向你展示如何配置和自定义 LangGraph Retrieval Agent 模板与 Elasticsearch,以构建一个强大的 RAG 工作流,实现高效的数据检索和由 AI 驱动的响应。 Elasticsearch 原生集成了…...
云原生--核心组件-容器篇-2-认识下Docker(三大核心之镜像,容器,仓库)
1、Docker基本概念 (1)、定义 Docker是一种开源的应用容器引擎,是基于操作系统级虚拟化技术。允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何支持Docker的环境中运行。Docker容器是轻量级、独立且可执…...
智慧园区IOT项目与AI时代下的机遇 - Java架构师面试实战
在互联网大厂的Java求职者面试中,面试官通常会针对实际业务场景提出一系列问题。以下是关于智慧园区IOT项目及AI时代下的机遇的面试模拟对话。 第一轮提问 面试官:马架构,请简要介绍下智慧园区IOT项目的整体架构设计。 马架构:…...
Unity中文件上传以及下载,获取下载文件大小的解决方案
首先现在Unity插件那么的广泛的情况下,很多东西都不需要自己实现,直接使用第三方插件就可以了,但为什么这里需要自己写,接下来说明原因。 在Unity商城中有很多关于关于网络接口调用的插件,其中有一款叫BestHTTP这款使用比较广泛的插件,不知道朋友们是不是都知道,是不是…...
Word/WPS 删除最后一页空白页,且保持前面布局样式不变
如题,试了多种方法,都不行。主要是可能的原因太多了,没有通解,这只是适用于我的情况。 解决方案: 首先光标放在倒数第二页(即想保留的最后一页),点击页面右下角这个小箭头ÿ…...
MySQL长事务的隐患:深入剖析与解决方案
MySQL长事务的隐患:深入剖析与解决方案 一、什么是长事务? 在数据库系统中,长事务(Long Transaction)通常指执行时间超过预期或系统设定阈值的事务。对于MySQL而言,虽然没有严格的时间定义,但一般认为执行时间超过数…...
【Tauri】桌面程序exe开发 - Tauri+Vue开发Windows应用 - 比Electron更轻量!8MB!
效果图 Tauri的二进制文件体积显著小于Electron,安装包通常缩小80%以上。应用启动更快,内存占用更低,尤其在老旧设备上体验更流畅。 写在前面 Tauri官网 https://tauri.app/zh-cn/支持语言:js、ts、rust、.net编译出来的exe文件&…...
2025春季NC:3.1TheTrapeziumRule
3.1TheTrapeziumRule 📐 The Idea Instead of finding the exact area under a curve y = f ( x ) y = f(x) y=...
【摩尔定律】
一、摩尔定律的核心定义 原始表述(1965年) “集成电路上可容纳的晶体管数量,每隔约 18-24个月 便会增加一倍,同时性能提升一倍,而成本下降一半。” 简化理解 芯片的 晶体管密度 和…...
Maven 依赖冲突调解与版本控制
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
《Python Web部署应知应会》Flask网站隐藏或改变浏览器URL:从Nginx反向代理到URL重写技术
Flask网站隐藏或改变浏览器显示URL地址的实现方案:从Nginx反向代理到URL重写技术 引言 在Web应用开发中,URL路径的安全性往往被忽视,这可能导致网站结构和后端逻辑被攻击者轻易推断。对于Flask框架开发的网站,如何隐藏或改变浏览…...
6.2 内容生成与营销:个性化内容创作与营销策略优化
随着消费者对个性化体验的需求日益增长,传统的内容创作与营销方式已难以满足市场竞争的需要。基于大语言模型(LLM)与智能代理(Agent)的技术为企业提供了全新的解决方案,能够实现高效、精准、规模化的内容生…...
平面连杆机构(上)
1、平面四杆机构的类型与演化 1)平面四杆机构的类型 a、铰链四杆机构:曲柄摇杆机构、双曲柄机构、双摇杆机构 b、其他四杆机构:曲柄滑块机构、导杆机构、滑块机构、双滑块机构、偏心轮四杆机构...... 2)平面四杆机构的演化 a、…...
【数据结构刷题】顺序表与ArrayList
【数据结构刷题】顺序表与ArrayList 1. 杨辉三角2. 合并两个有序数组 1. 杨辉三角 LC链接:杨辉三角 //杨辉三角import java.util.ArrayList; import java.util.List;public class Demo1 {public List<List<Integer>> generate(int numRows) {List<…...
顶点着色器和片元着色器染色+表面体着色器染色
顶点/片元着色器染色 创建材质球及Shader同名文件VFColor //Update NOTE:replaced mul(UNITY_MATRIX_MVP,*) with UnityObjectToClipPos(*) Shader "CreateTest/VFColor" {Properties{_Color("颜色",Color)(1,1,1,1)}SubShader{Pass{//顶点片…...
240426 leetcode exercises
240426 leetcode exercises jarringslee 文章目录 240426 leetcode exercises[1669. 合并两个链表](https://leetcode.cn/problems/merge-in-between-linked-lists/?envTypeproblem-list-v2&envIdlinked-list)🔁基础版 保存断点,先拼再补…...
代码随想录算法训练营Day35
卡码网46.携带研究材料 力扣494.目标和【meidum】 力扣416.分割等和子集【medium】 一、卡码网46.携带研究材料 题目链接:卡码网46.携带研究材料 视频链接:代码随想录 题解链接:代码随想录 1、思路 dp[i][j] 表示从下标为 [0-i] 的物品里任意…...
C++17 折叠表达式
C17 引入的折叠表达式(Fold Expressions) 是处理可变参数模板(Variadic Templates)的革命性特性。它通过简洁的语法,使得对参数包(Parameter Pack)的操作更加直观和高效,避免了传统的…...
Ubuntu编译opencv源码
准备 Ubuntu版本:22.04opencv版本:4.9.0没下载Ubuntu镜像的可以在清华镜像下载 本文以4.9.0版本演示,可根据自身情况选择 安装JDK和依赖项 本次编译主要为了获取java在linux环境下的动态库,所以需要在虚拟机上下载jdk # 安装…...
一种滑窗像素自差值的深度学习损失函数
公司项目,已申请专利。 深度学习作为新兴技术在图像领域蓬勃发展,因其自主学习图像数据特征避免了人工设计算法的繁琐,精准的检测性能、高效的检测效率以及对各种不同类型的图像任务都有比较好的泛化性能,使得深度学习技术在图像领…...
【Typecho】给Joe主题后台添加custom自定义功能!
大家好,今天来添加一下自定义功能! 😂 温馨提示:站长已经通过本地环境测试custom自定义功能,功能正常可以使用,按照我的操作来一定成功! 大纲 创建custom.php粘贴代码到custom.php文件引入cus…...
一些常见的资源池管理、分布式管理和负载均衡的监控工具
资源池管理监控工具 Prometheus 是一款开源的系统监控和警报工具。它可以通过收集各种指标数据,如CPU使用率、内存使用量、磁盘I/O等,来监控资源池中的服务器、容器等资源。Prometheus具有强大的查询语言和可视化功能,能够帮助管理员快速了解资源的使用情况,并及时发现潜在…...
WPF程序使用Sugar操作数据库
WPF 程序使用 Sugar ORM 操作数据库 一、引言 在 WPF(Windows Presentation Foundation)应用程序中,数据库操作是不可或缺的一部分。Sugar ORM(对象关系映射)是一种轻量级的 ORM 框架,它简化了数据库操作,使得开发者能够以面向对象的方式与数据库进行交互。本文将详细…...
【Castle-X机器人】四、智能机械臂安装与调试
持续更新。。。。。。。。。。。。。。。 【Castle-X机器人】智能机械臂安装与调试 四、智能机械臂安装与调试2.1 安装2.2 调试2.2.1 2D摄像头测试 四、智能机械臂安装与调试 2.1 安装 使用相应工具将机械臂固定在Castle-X机器人底盘 2.2 调试 2.2.1 2D摄像头测试 内容地址 链…...