Odoo 16模块开发实战:从结构搭建到权限视图的完整指南
简介Odoo 16 按部就班实战精解基础篇是一套面向ERP新手及Odoo二次开发者的实战教程资源紧扣Odoo 16的财务、销售、采购、库存、生产制造、人力资源与项目管理等企业级模块讲解方式按阶段拆解适合系统进阶与项目落地。压缩包共554个文件包括233个Python业务逻辑文件、202个XML视图/动作定义文件、43个MP4分阶段操作录屏、38个CSV安全权限与演示数据、37个PNG结构示意图另附1个exe辅助工具整体461.73MB目录分类清晰。内容重点覆盖库存预测增强、电子发票自动匹配、销售模块升级、集团集采(SRM)和生产补货策略等Odoo 16新增能力每个阶段的视频均配有对应源码便于一边观看一边修改调试真正掌握模块开发思路与排错方法。目前已有254人学习下载适合需要用最短路径上手Odoo 16、并独立搭建企业级功能模块的开发者。1. Odoo 16 实战精解基础篇照着官方文档敲完代码还是跑不起来不少做 Python ERP 实施的人刚接触 Odoo 16第一反应是“这系统文档真全”但真到自己要写一个业务模块时卡壳的往往不是业务逻辑而是模块结构、权限加载、视图和菜单的先后顺序这类基础问题。这份《Odoo 16 按部就班实战精解基础篇》本质上不是一本照抄官方文档的翻译稿而是把从空目录到可运行模块的完整动作拆成步骤配合可复制的代码和踩坑记录。适合三类人刚转 Odoo 的 Python 后端、ERP 实施里需要写定制逻辑的顾问以及想用 Odoo 搭内部管理系统但不想碰源码的开发者。2. 先把“地基”拆明白Odoo 16 模块结构与运行机制2.1 一个 Odoo 模块的“最小可运行”文件结构很多新手拿到一份开源 Odoo 项目第一件事是试图从odoo-bin start开始读代码这方向不对。Odoo 的模块加载机制和普通 Flask/FastAPI 项目完全不同它先读__manifest__.py声明文件再按里面的顺序加载 Python 模型与 XML 数据文件。模块本身不是一个可执行程序而是一个被 Odoo 框架“装配”进去的零件。一个最小可运行的模块目录结构通常长这样路径作用__init__.py模块入口导入 models 包__manifest__.py模块声明依赖、版本、数据文件加载顺序models/Python 模型定义目录models/__init__.py导入模块内的模型文件security/权限配置文件CSV 与 XMLviews/菜单、动作、视图定义static/前端资源基础篇可不创建__manifest__.py是整个模块的“装载清单”下面的写法是基础篇里最常被复用的骨架# -*- coding: utf-8 -*- { name: Training Course, version: 16.0.1.0.0, category: Operations, summary: 培训课程管理, depends: [base], data: [ security/ir.model.access.csv, views/training_course_views.xml, ], installable: True, application: False, }version里的16.0是 Odoo 主版本号1.0.0是模块自身迭代号升级模块时保持主版本不变只改后面三位即可。depends声明依赖模块Odoo 在安装时会先加载被依赖的模块这个顺序一旦写错后面导入模型时大概率报“表不存在”。data数组的加载顺序非常敏感安全权限必须先于视图加载否则菜单能看见、点进去却报权限不足。从这段代码出发新手最容易犯的错是把application改成True——它不是“主应用”的意思而是“在应用列表里单独展示”基础模块保持False即可。2.2 Python 模型是“表结构”不是“业务逻辑”在 Odoo 16 里一个 Python 类对应数据库里的一张表。类的命名规范是用点号分隔的模型名比如training.course对应数据库表名training_course这个映射关系在框架底层自动完成不需要手写 SQL。模型类继承models.Model类变量_name就是模型标识。# models/training_course.py from odoo import fields, models class TrainingCourse(models.Model): _name training.course _description 培训课程 name fields.Char(string课程名称, requiredTrue) code fields.Char(string课程编号, indexTrue) category fields.Selection([ (technical, 技术), (management, 管理), ], string课程分类, defaulttechnical) duration fields.Float(string课时, default1.0) trainer_id fields.Many2one(hr.employee, string讲师) active fields.Boolean(string启用, defaultTrue)requiredTrue会在数据库层面和界面表单上同时生效比只在前端做校验可靠得多。indexTrue给该字段加数据库索引如果后续会按code频繁搜索这个参数能明显提升查询效率代价是写入略变慢。Many2one是外键关联这里关联到hr.employee前提是hr模块已经被依赖——如果你在depends里只写了base加载到这里就会报模块不存在的错误。这里要强调一个认知Odoo 的基础篇里不要在模型里堆业务逻辑。compute、onchange、constraint这些都有各自的触发时机和性能代价先能把字段、关系、默认值写对再去折腾计算字段基础阶段最忌一上来就炫技。3. 从零搭出一个能跑的模块脚手架、模型到升级验证3.1 用 odoo-bin scaffold 生成骨架别手搓目录知道模块结构之后很多新人会手动创建目录和文件。这样做的坏处是容易漏掉__init__.py的导入或者视图 XML 缩进不统一最后在升级时报备解析错误。正确做法是用 Odoo 自带的脚手架命令cd /opt/odoo16 ./odoo-bin scaffold training_course ./my_addonsscaffold是 Odoo 16 自带的项目生成命令training_course是模块名./my_addons是自定义模块存放目录。执行后会在my_addons下生成完整的模块骨架包括models、views、security等目录和示例文件。注意scaffold生成的模型是_name training.course但视图模板和权限 CSV 里的模型名需要手动同步很多新手改完模型名忘了改视图里的model属性升级时报“模型不存在”。我习惯在生成骨架之后先删掉示例里的demo数据文件再开始改业务字段。示例数据文件在基础模块里意义不大留着反而会在升级时一直往数据库里灌测试记录。3.2 定义“能落业务”的模型字段别一上来就写 onchange 和 compute脚手架生成后直接编辑models/training_course.py把默认的name字段扩展成实际业务字段。上面 2.2 那段代码就是可以直接落到项目里的。整理一份字段声明顺序的经验主标识字段放在最前面然后是业务属性再是关联字段最后是状态类和审计类字段。from odoo import fields, models class TrainingCourse(models.Model): _name training.course _description 培训课程 _order create_date desc name fields.Char(string课程名称, requiredTrue) code fields.Char(string课程编号, indexTrue, copyFalse) category fields.Selection([ (technical, 技术), (management, 管理), ], string课程分类, defaulttechnical) duration fields.Float(string课时, default1.0, help单位为小时) trainer_id fields.Many2one(hr.employee, string讲师) active fields.Boolean(string启用, defaultTrue)_order create_date desc是模型层面的默认排序列表视图没指定排序时会使用这个。copyFalse表示复制记录时不复制该字段code这种唯一编号类字段建议加上否则复制课程时编号会重复。help参数提供字段的悬停提示可以在不增加表单复杂度的前提下告诉操作人员这个字段的单位和口径。这一步最容易翻车的点hr.employee依赖的hr模块。如果系统里没有安装基础人力资源模块Many2one(hr.employee)会在升级时抛Field trainer_id does not exist之类误导性很强的报错。排查时先看depends再确认目标模块确实已安装别一头扎进字段定义里找问题。3.3 升级使动作生效以及模块列表里“找不到”的排查写代码只是第一步让 Odoo 真正把表建出来需要执行模块升级。Odoo 16 不会自动加载你新丢进 addons 目录的模块必须先更新模块列表再安装这是新手最容易卡壳的一步。# 更新模块列表并安装新模块 ./odoo-bin -c odoo.conf -d demo_db -i training_course --stop-after-init # 开发迭代时用 -u 升级已有模块 ./odoo-bin -c odoo.conf -d demo_db -u training_course --stop-after-init-i是 install 的简写用于安装尚未安装的模块-u是 upgrade修改了 Python 模型或 XML 文件后必须执行升级才会生效。--stop-after-init表示数据库初始化完成后立即退出进程适合在命令行里做静默安装如果不加这个参数Odoo 会一直挂着监听 HTTP 请求。升级完成后再正常启动服务./odoo-bin -c odoo.conf -d demo_db --http-port8069打开浏览器进入系统在“应用”菜单里搜索training.course这时模块应该已经显示为“已安装”。如果搜索不到第一件事不是重装而是检查你的odoo.conf里addons_path是否包含./my_addons这个目录。我遇到过好几次的情况是模块代码没问题但addons_path里忘了加目录服务起的是另一套插件路径。4. 让模块长出“界面”视图、菜单与安全权限4.1 菜单是入口XML 里的一次 record 创建模型建好后界面上看不到入口因为还没有创建菜单和动作Action。在 Odoo 16 里菜单、动作、视图都是数据库里的记录通过 XML 文件在模块升级时写入。理解“XML 里的record就是在向数据库插入一条ir.ui.menu或ir.actions.act_window记录”后面调试菜单问题就通透了。先写动作和菜单odoo data record idtraining_course_action modelir.actions.act_window field namename培训课程/field field nameres_modeltraining.course/field field nameview_modetree,form/field field namedomain[]/field field namesearch_view_id reftraining_course_search/ /record record idtraining_menu_root modelir.ui.menu field namename培训管理/field field namesequence10/field /record record idtraining_course_menu modelir.ui.menu field namename课程列表/field field nameparent_id reftraining_menu_root/ field nameaction reftraining_course_action/ field namesequence1/field /record /data /odooir.actions.act_window定义了一个窗口动作res_model指向要展示数据的模型view_mode表示列表视图和表单视图的切换顺序。菜单记录里的parent_id指定上级菜单ref引用同一个模块内定义的记录 id这是模块内部引用的标准写法。窗口动作建好后菜单通过action字段挂到了动作上点击菜单就能打开对应模型的视图。这里有个容易忽略的小规则菜单下的动作如果没有绑定视图Odoo 会自动为该模型生成一个“无主”视图但这个视图既不能编辑字段布局也没有指定列表字段进了页面只看到一排空白列。所以窗口动作和自定义视图通常成对出现。4.2 tree / form / search 视图哪个字段展示、哪些字段可编辑视图是 Odoo 16 里最值得花时间打磨的部分。列表视图决定了用户每天打开模块时第一眼看到什么字段表单视图决定了编辑时的布局搜索视图决定了筛选效率。record idtraining_course_tree modelir.ui.view field namenametraining.course.tree/field field namemodeltraining.course/field field namearch typexml tree string课程列表 field namecode/ field namename/ field namecategory/ field nameduration/ field nametrainer_id/ /tree /field /record列表视图里的field出现顺序就是渲染列的顺序。trainer_id是Many2one默认显示关联记录的display_name不需要额外配置。如果列较多可以在tree上设置editablebottom允许用户在列表上直接编辑适合批量录入的销售单场景但基础模块不建议每个列表都打开误操作概率高。表单视图的结构更讲究record idtraining_course_form modelir.ui.view field namenametraining.course.form/field field namemodeltraining.course/field field namearch typexml form string培训课程 sheet group group field namename/ field namecode/ field namecategory/ /group group field nameduration/ field nametrainer_id/ field nameactive/ /group /group notebook page string备注 field namenote/ /page /notebook /sheet /form /field /recordgroup用于两列布局notebook生成选项卡式区域适合组织“主要信息”和“备注”两屏内容。Odoo 16 的sheet结构决定了表单的整体宽度和主题样式记得始终用sheet包裹内容否则页面显示会异常窄。搜索视图和列表、表单不太一样它控制的是界面顶部的筛选和分组record idtraining_course_search modelir.ui.view field namenametraining.course.search/field field namemodeltraining.course/field field namearch typexml search string培训课程 field namename/ field namecode/ filter nametechnical string技术类 domain[(category, , technical)]/ /search /field /recordsearch里的field声明了可搜索字段filter是预设过滤条件domain就是一个搜索条件表达式。写好搜索视图后要在窗口动作里通过search_view_id把它引用进去否则新建了视图也不会生效。这是我自己踩过的坑搜索视图文件写了也升级成功了但动作里忘了挂前端搜什么都没反应。4.3 权限看不见数据八成是 access.csv 没写模型、视图都建好后如果你登录系统打开菜单却发现列表空空如也先别急着查视图80% 的情况出在权限文件。Odoo 16 的权限体系分两层模型级访问权限和记录级规则。基础篇要先把模型级权限表写对。security/ir.model.access.csv是每个模块必备的权限文件id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_training_course_user,training.course.user,model_training_course,base.group_user,1,1,1,1model_id:id的写法是model_加上模型全程点号转下划线training.course对应model_training_course。group_id:id指定哪个用户组拥有该权限base.group_user是内置的“内部用户”给这个组权限意味着所有登录用户都能访问。后面四个 1 分别表示读、写、创建、删除如果只需要只读后面三个写 0 即可。权限列含义设为 0 的场景perm_read能否读取记录不开放查看的敏感数据perm_write能否修改现有记录归档数据只读perm_create能否新建记录只允许后台脚本创建perm_unlink能否删除记录防止误删文件写好后同等级下还可能出现“数据看不见”的现象那就是记录规则ir.rule造成的。基础模块一般不用自定义ir.rule但排错时心里要有这根弦先确认权限表里perm_read是 1再检查是否有人为添加的记录级规则限制了domain。4.4 配置文件的正确顺序从 data 数组到视图引用一个模块里可能有多个视图 XML 文件__manifest__.py的data数组顺序决定了加载顺序而这个顺序直接决定了升级时是报错还是顺滑跑完。Odoo 16 有严格的先后依赖data: [ security/ir.model.access.csv, security/record_rules.xml, views/training_course_views.xml, views/training_course_menu.xml, ],安全权限文件永远排在第一位这是硬性要求。如果视图文件里引用了权限相关的分组而权限又定义在视图之后加载升级时大概率报“找不到安全分组”。视图文件内部建议先放视图定义tree/form/search再放窗口动作和菜单因为动作需要引用视图 id。如果你的视图文件拆成了多个通常将views和menus分文件并在data里按“权限 → 视图 → 动作 → 菜单”的顺序排列这套顺序适配 90% 的基础业务模块。5. Odoo 16 避坑清单升级、权限、缓存与模块依赖的五个翻车现场5.1 菜单不显示现象模块显示已安装菜单却完全不在界面里。 原因最常见的是当前用户所属权限组没有分配对应菜单的访问权限其次是你定义了父菜单但父菜单本身不可见。 解决先在开发者模式下进入“设置 → 用户”把当前用户加入Settings/Technical Features组清除缓存视图后刷新确认菜单里没有给groups_id配上未分配的组。基础模块里菜单通常不加权限限制只有动作和模型加权限。5.2 改模型后刷新页面报“列不存在”现象在 Python 模型里删掉了一个字段升级成功后网页上点击记录报column training_course.xxx does not exist。 原因Odoo 16 的 ORM 在升级时会对表结构做同步但这个同步依赖数据库迁移的正确记录。删除字段时如果该字段在数据库里仍被视图或搜索引用升级过程会自动跳过物理删除导致“列不存在”报错。 解决先备份数据库再用 SQL 手动清理残留字段列ALTER TABLE training_course DROP COLUMN IF EXISTS old_field;万一删除失败恢复备份重来是代价最低的出路别硬撑。从那以后我每次删字段前都会把改动路径的视图 XML 一起移掉再做升级。5.3 视图升级不生效页面还是旧布局现象XML 视图里调整了字段顺序执行-u training_course升级后页面显示的还是旧结构。 原因视图的更新依赖ir.ui.view记录本身的“写时间戳”如果 XML 文件里的 record id 与数据库中已有记录的 id 对不上比如从旧模块继承过来的视图没有覆盖升级不会触发视图重写。 解决在开发者模式下进入“设置 → 技术 → 用户界面 → 视图”搜索目标模型对比记录的“外部 ID”或xml_id。如果发现有两个同模型视图同时存在删掉冗余的那个再升级。这里的经验是写视图务必引用已在manifest里声明的 XML 文件并且不要在多个文件里定义同一个record id。5.4 列表空白但我确定有数据记录规则背锅现象用户登录后打开课程列表页面没有任何数据同一个库在管理员账号下却是好的。 原因这不是菜单权限问题而是ir.rule记录规则生效domain把当前用户可读范围过滤成空。 解决先关闭“开发者模式”检查是否存在该模型的ir.rule。临时验证时把规则里的直接 domain 改为[(1, , 1)]代表完全放行再逐步收紧。常见误写是[(create_uid, , user.id)]试图只让创建人看到但user.id在规则环境里要用uid或user.id取决于写法Odoo 16 里统一用user.id写成其他别名就会恒为假。5.5 依赖模块版本不对升级时连环报错现象安装模块时报Module training.course depends on module hr which is not installed明明系统里有人力资源模块。 原因多半是depends里写了hr但当前数据库里hr模块未安装或者安装的是企业版路径社区版的hr功能缺失。 解决先确认依赖模块列表再执行./odoo-bin -c odoo.conf -d demo_db -i hr --stop-after-init顺序执行后返回安装目标模块。如果依赖模块本身报了语法错误优先修依赖、再装目标。依赖关系是“先装底、后装顶”的倒着来只会连环报错。6. 从“会跑”到“能查 bug”用 odoo-bin shell 验证数据比打断点快一倍模块能跑起来之后最耗时间的往往不是写代码而是确认数据是否按预期落库、关系是否正确。很多初学者习惯在网页上点来点去验证但视图层会掩盖底层问题。我一般会用odoo-bin shell直接进运行时环境把模型当 API 调几分钟就能确认数据链路。./odoo-bin shell -c odoo.conf -d demo_db --no-http这条命令会进入一个交互式 Python 环境env已经是全局可用变量不需要手动连接数据库。进入后先查询再创建最后改一条记录# 查看课程总数 env[training.course].search_count([]) # 按条件搜索 courses env[training.course].search([(category, , technical)]) print(courses) # 创建课程 new_course env[training.course].create({ name: Odoo 16 基础实战, code: OD16-001, category: technical, duration: 6.0, }) # 验证创建结果 print(new_course.name, new_course.code)search_count返回记录数量适合先确认模块权限和基础数据是否正常search返回记录集配合print(courses)能看到记录 id 和 display_namecreate用字典传值字段名必须与模型定义完全一致。如果看到KeyError: name说明模型字段没注册成功多半是__init__.py里漏了导入。shell 里还能排查Many2one关联是否有效if new_course.trainer_id: print(讲师, new_course.trainer_id.display_name) else: print(当前记录未设置讲师)在 shell 里做的所有数据操作都会真实写入数据库建议测试时用一个独立数据库或者测试完直接回滚。我现在的固定流程是改完模型先-u升级再进 shell 跑一遍“创建 搜索 关联字段读取”确认数据没问题后再去打磨视图。这个习惯帮我省掉了大量“界面报错先怀疑前端、实际是模型逻辑有问题”的排查时间。如果是复杂模块的二次开发shell 里还可以临时修改记录甚至调用计算字段和约束检查基础篇用不上那么多但这一段代码思路建议保留下来。遇到说不清的诡异现象时进 shell 手动跑一遍 create 和 search往往一眼就能定位是权限问题、字段注册问题还是视图配置问题。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

OpenCV像素级位运算:and/or/not图像逻辑控制原理与实战

OpenCV像素级位运算:and/or/not图像逻辑控制原理与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:29:04 阅读更多 →
PyTorch神经网络搭建:Sequential与nn.Module选型指南

PyTorch神经网络搭建:Sequential与nn.Module选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:29:04 阅读更多 →
ISO 13485:2016中文翻译稿:从验证到落地,绕开体系审核雷区

ISO 13485:2016中文翻译稿:从验证到落地,绕开体系审核雷区

简介:ISO 13485:2016中文翻译稿是一份面向医疗器械行业质量管理人员的专业参考资料,涵盖标准前言、引言、适用范围与质量管理体系核心要求等完整章节。翻译稿由网友整理校对,可作为理解标准条文、应对内外部审核及实施体系文件的辅助读物。文…

2026/10/17 10:29:04 阅读更多 →

最新新闻

端侧智能推理优化指南:从量化到NPU的工程实践

端侧智能推理优化指南:从量化到NPU的工程实践

手里有几个端侧智能项目的推理优化落地之后,我终于有底气把这块硬骨头拆开讲讲。所谓“端侧智能推理优化与加速技术”,说白了就是让模型在手机、平板、车载盒子、边缘工控机这些资源有限的设备上,跑得又快又稳又省电。模型压缩、量化、算子替…

2026/10/17 11:04:15 阅读更多 →
端侧智能推理优化与加速:从模型压缩到运行时调度实战

端侧智能推理优化与加速:从模型压缩到运行时调度实战

端侧智能推理优化与加速这件事,我做了几年,最大的感受是:很多模型在服务器上跑得飞快,一挪到手机、开发板上就“翻车”——要么首帧延迟高得离谱,要么功耗撑不过半小时,要么精度掉到没法用。所谓“端侧高效…

2026/10/17 11:04:15 阅读更多 →
书匠策AI辅助毕业论文写作全流程实战指南

书匠策AI辅助毕业论文写作全流程实战指南

又是一年毕业季,我的私信列表里陆陆续续躺着几十条求助消息,内容几乎一个模子刻出来的:导师催着交开题报告、文献综述憋了一个月还是干巴巴、论文改了第七稿仍然被批逻辑断裂、查重报告飘红一片不知从何下手。毕业论文这四个字,确…

2026/10/17 11:04:15 阅读更多 →
Arduino摩尔斯电码库:零基础5分钟实现LED嘀嗒通信

Arduino摩尔斯电码库:零基础5分钟实现LED嘀嗒通信

简介:这是一份专为Arduino初学者与电子爱好者设计的摩尔斯电码功能扩展库,解决在嵌入式项目中快速实现字符→摩尔斯电码转换及LED信号输出的实际需求,适用于教学实验、创意交互装置开发与通信原理入门实践。资源包共4个文件,含核心…

2026/10/17 11:04:15 阅读更多 →
C++ 手写 AI 编程 Agent(3):工具注册表与文件操作工具集

C++ 手写 AI 编程 Agent(3):工具注册表与文件操作工具集

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 11:04:15 阅读更多 →
uniapp中scroll-view与swiper联动tab切换的实战避坑指南

uniapp中scroll-view与swiper联动tab切换的实战避坑指南

1. 项目概述:为什么这个组合在实际开发中总让人“手抖”做uniapp项目时,只要页面里有带tab栏的滑动切换需求,几乎没人能绕开scroll-view和swiper这两个组件。但凡你试过用它们搭一个“左右滑动切页顶部tab高亮联动”的功能,大概率…

2026/10/17 11:03:15 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →