基于嵌入式linux的视频图像采集

合集下载

嵌入式Linux下的视频和图像采集

嵌入式Linux下的视频和图像采集

( ieD v e设 备 描 述 类 ,把 设 备 封 装 为 一 个 对 象 ,将 : do ei V c
V oLnxA 1 ie4 iu P 分解 为一个个 小 的模块 ,作 为它私 有 函数 , E J
只为外部保 留相应 的访 问接 口( 公有 函数 ) 。另外 ,设备 向外输 出的是 图像 ,同样 ,为 了访问的方便 ,将摄像头采集刮 的原始 数据 处理后再 输 出。结合 Q 的类 ,将 R B数据 转化 为 Q m ‘ G I— a 对 象 ,保 存 在 ・ Q m g 个 I ae图 像 向 【 , 该 向量 设 为 1 1 c ieD v e的私有 成 。外 部 通过 Ql ae G tG (n i V do ei c m g e B it ) R
号虑到模块有二个较明显的操作层次 :底层的设备操作 ,中问
层的数据流动 ,上层的视频 显示 与快照等操作。各个层次有 … ・ 定 的独立性 。所 以程序设计面 向对象 ,各个层次用类封装 ,类 中提供外部访 问的接 n。
底 层的设 备可作 为一个 独立 的对象 , 与设备操 作高 度相
关 , 如 设 备 的 打 开 、设 置 、 读 取 数 据 等 。 笔 者 设 汁 r
到来 ,利用嵌入式系统实现远程视频崎挖 、町视电话 和视 频会 议等应用 已成为可能。为 r实现这 应崩 ,实时获得 视频 数据
是 ・ 个重葛环节 针对这 一 点本 文在 基 r嵌入式 Ln x系统 、 iu
支持 隐藏 和显示 . .
仃 卜 用 VdoL u 利 i 4 i x内核 应 编程接 几函数 ,实现 了 单帧 网 e n
r ur —ern et n r o;


引言

《基于嵌入式Linux的数据采集系统的设计与实现》

《基于嵌入式Linux的数据采集系统的设计与实现》

《基于嵌入式Linux的数据采集系统的设计与实现》一、引言随着信息技术的飞速发展,数据采集系统在各个领域的应用越来越广泛。

嵌入式Linux作为一种轻量级、高效率的操作系统,在数据采集系统中得到了广泛应用。

本文将介绍基于嵌入式Linux的数据采集系统的设计与实现,旨在为相关领域的研究和应用提供参考。

二、系统需求分析在系统需求分析阶段,我们首先需要明确数据采集系统的功能需求和性能需求。

功能需求主要包括:能够实时采集各种类型的数据,如温度、湿度、压力等;能够实时传输数据至服务器或本地存储设备;具备数据预处理功能,如滤波、去噪等。

性能需求主要包括:系统应具备高稳定性、低功耗、快速响应等特点。

此外,还需考虑系统的可扩展性和可维护性。

三、系统设计1. 硬件设计硬件设计是数据采集系统的基础。

我们选用一款具有高性能、低功耗特点的嵌入式处理器作为核心部件,同时配备必要的传感器、通信模块等。

传感器负责采集各种类型的数据,通信模块负责将数据传输至服务器或本地存储设备。

此外,还需设计合理的电源模块,以保证系统的稳定性和续航能力。

2. 软件设计软件设计包括操作系统选择、驱动程序开发、应用程序开发等方面。

我们选择嵌入式Linux作为操作系统,具有轻量级、高效率、高稳定性等特点。

驱动程序负责与硬件设备进行通信,实现数据的采集和传输。

应用程序负责实现数据预处理、存储、传输等功能。

四、系统实现1. 驱动程序开发驱动程序是连接硬件和软件的桥梁,我们根据硬件设备的接口和协议,编写相应的驱动程序,实现数据的实时采集和传输。

2. 应用程序开发应用程序负责实现数据预处理、存储、传输等功能。

我们采用C/C++语言进行开发,利用Linux系统的多线程、多进程等特性,实现系统的并发处理能力。

同时,我们利用数据库技术实现数据的存储和管理,方便后续的数据分析和处理。

3. 系统集成与测试在系统集成与测试阶段,我们将硬件和软件进行集成,进行系统测试和性能评估。

基于Linux的视频采集软件研究与实现

基于Linux的视频采集软件研究与实现
I 建 立 开 发 环 境l

基于 v i v i 发展而来 , 不提供源代码 , 在保 留原始 v i v i 功 能 的基 础 上 , 整 合 了 诸 多 实 用 功 能, 如 支 持 C R A M F S , Y A F F S文 件系 统, U S B下 载 , 自动 识别 L i n u x , w i n c e 等多种操作系统 , 下载程序到内存中执 行。B o o t l o a d e r 可以直接通过 H— J T A G烧写到 N o r
据任务需要 , 进行 内核 配置。其中与配置联系 比较 紧密 的 就 是 “ S y s t e m T y p e ” 、 和“ D e v i c e D r i v e r s ” 菜 单 。在 “ S y s t e m T y p e ” 中选择 ¥ 3 C 2 4 4 0的配置, 在 “ D e v i c e D r i v e r s ” 即设备驱动程序中选择各个驱动程 序的模块 , 而本设计在该菜单 中选择万能摄像头的 驱动程序 。其余按 系统 默认配置。配置过程结束
n e 1 . o r g / , 可以下载任何版本的 L i n u x系统内核。本
文使 用 的是 L i n u ) - 2 . 6 . 2 2 . 6 . t a r . b z 2 。补丁 文件 为
p a t c h一2 . 6 . 2 2 . 6 . b z 2 。
2 . 1 建立 开发环 境和 交叉编译 工具链
c d /wo r k /t o o l s
_ 蚕 ~ ~ 一 曲
交给内核中的体系无及 系统 其余 部 分 的初 始 化 。L i n u x源 代码 是
t a r x j r a r l n— l i n u x— g c c一 3 . 4 . 5一g l i b c 一2 . 3 . 6 .

基于嵌入式Linux的网络视频实时监控系统

基于嵌入式Linux的网络视频实时监控系统
视频码 流和控制 信息 。客户端设 计 了基于 不 同平 台 的
式 视频监 控 模 块 传 过 来 的 M E - 频 数 据进 行 解 P G4视
码 , 权用 户直接 通过 I 览器或 者下 载专用 软件 即 授 E浏
可 观看摄 像 机 的视 频 图像 , 可 以 对 系统 进 行 配 置 。 还
第 3 第 9期 4卷 20 0 8年 9月
电 手 工 程 师
ELECTR0NI ENGI C NEER
Vo . 4 No 9 13 . S p. 2 08 e 0
基 于 嵌入 式 Ln x的 网络视 频 实 时监控 系 统 iu
漆 源 , 程 恩 , 子 明 庄
( 门大 学水声通信 与 海洋信 息技 术教 育部 重点 实验 室, 建省 厦 门市 3 10 ) 厦 福 6 0 5
宅小 区 、 幼儿 园的远 程监控 , 是多媒 体 监控 领域 未来 的
发 展方 向
像 机从 C S摄像 头获 得原 始 的视频 信 号 , MO 通过 视 频
1 系统的应用方案
本 系统 中 , 网络 摄 像 头 利 用 以 太 网接 V/ F 模 IWii
块接入 有线/ 线 网 络 , 户 通 过 网 络 用 P 手 机 或 无 用 C、
现简 单 的 I 式 组 网 , 传 统 模 拟 监 控 所 无法 实 现 P方 是
的 。而采用这 种远 程视频 监控 系统 易存 在传输 速度受 限、 系统稳定性 差 等 缺点 。本 文 针对 远 程 的可 视 化 监
和客户 端的媒 体数 据传 输 协议 除 了支 持 R P 实 时传 T(
和立体 声编码 解码 器及 网 络接 r芯 片等 , 丁 开发 出最 小

基于嵌入式Linux的网络视频监控系统

基于嵌入式Linux的网络视频监控系统
维普资讯
基 于嵌 入 式 Ln x的 网络 视 频 监 控 系统 iu
・ 5・ 5
基 于 嵌 入 式 Lnx的 网络 视 频 监 控 系统 iu
赵 方鹏 , 建 华 ,赵 杨 忠 ,刘 文 涛
7 07 ) 10 2 ( 西北 工业 大学 自动化学院 , 陕西 西安
系统的工作原理 是利 用嵌 入式 Ln x和 A M 控制 器建 立 iu R
We b服务器 , 通过服务器接收来 自浏览器 的指令并 采集 U B摄 S
像 头的视频 图像 , 并通过 网络 向浏览器传输 视频 , 而达到远 程 从
视 频 监 控 的 目的 。 12 系统 硬 件 结 构 .
T e s s m u l sa W e e v rwh c a a t r ie in lf m S ii lc me a a d ta s o tt e sg a o c in ho g h y t b i b s r e ih C c p u e v d o sg a r e d n o U B d gt a r r n p r h i lt l tt r u h a n n e
台上 的应 用程 序 的 移植 。
关 键 词 : 入 式 Ln )视 频 采 集 ; 嵌 iu ; ( 可视 化 ; 网络视 频 监 控 中 图分 类 号 : P9 T 3 文 献标 识 码 : B 文 章 编 号 :O 0— 89 2 o )5— 0 5— 3 10 8 2 (0 7 0 0 5 0
( col fA t t n N r w s r o tc ncl nvri , ia 10 2 C ia S ho o u mao , o h et nPl eh i i sy X’ n70 7 , hn ) o i t e y aU e t

Linux下基于ARM9的嵌入式视频循环采集监控系统

Linux下基于ARM9的嵌入式视频循环采集监控系统

I 据构I J始重 I 初化要 数结
av
_
w ie ha e 0 rt _e dr

2 V d o Ln x视频 采集标 准 ie 4 i u 。 】
Vdo L u ie 4 m x是 L x系统视频采集软件 的总接 口。各 mu 种网络摄像 头, 视频采集卡 ,电视卡 以及类似 的设备均归类 于视频采 集领域 ,Vd oL x 为此 提供 了一整套相 应的 ie4 mu AP I接 口。由于各个设备均有 自己独立 的特性 ,Unx系统 i 均在此基础上进行了抽象,本着一切均是文件的设计思想 , 只需要进行 oe ( pn) 方法 即可打开设备文件 ,ra Owre ed / iO分 t 别是对该设备进行读 写传输数据 ,ic ( o t) l 则是对设备参数配
置。
av
— —
w t ri e
Mi o o ue A p c t n V 1 6 N ., 0 0 c c mp t p f a o s o 2 , oS 2 1 r r i i .
文 章 编 号 : 10 -5)(0 080 3 —3 0 77 7(2 1)—0 50
开发应 用
微型 电脑 应 用
21 0 0年第 2 6卷 第 8期
3 采用 F mpg库 实现视 频数据 存储 F e
F mpg是一个集录制 、转换、音, F e 视频 编码解码功能为 体的完整 的开源解决方案。F mp g的开发是基于 L u F e mx 操作系统 , 但是可 以在大多数操 作系统 中编译和使用,包括 wno id ws系 统 等 。F mpg支 持 MP G、DiX、MP G4 F e E v E -、 AC 、 3DV、L F V等 4 0多种编码 , V 、 P G、 G Ma ok 、 A IM E O G、 t sa r AS F等 9 种 解 码 。 O多 F mpg库支持多平台运行,包括 L x F e mu 、Wid ws n o 和 M OS等系统 。 a c 本设计将 F mp g移植到 AR F e M9架构的系 统上 ,通过交叉编译 生成运行库【。 4 j 31 基于 F mpg的视频处理技术 F e F mp g 主 目录 下 主 要 有 U a cdc l afr a F e bv o e 、 i vom t和 b l aui i vt b l等 子 目 录 。 其 中 h ac dc 用 于 存 放 各 个 b vo e e c d/eo e模 块 ,l afr a noe cd d i vom t用于存放 mu e/e xr b xr mu e d 模块,l aui用于存放 内存操作等常用模块。 i vt b l 利用 f e mp g库生成视频文件 ,需要用到两个贯穿始终 的数据结构 :s ut V oma o t t s ut V t a t cA F r t ne 和 t cA Sr m。 r C x r e

基于嵌入式Linux的实时视频服务器的设计

基于嵌入式Linux的实时视频服务器的设计

第28卷第4期增刊2007年4月仪器仪表学报Chinese Journal of Scientific Instr umentVol 128No 14Apr 12007基于嵌入式L inux 的实时视频服务器的设计曾凡钢,戴曙光,穆平安(上海理工大学光学与电子信息学院 上海 200093)摘 要:本文介绍了一种网络实时视频服务器的设计和实现方法。

它基于嵌入式Linux 操作系统,采用目前最新的H.264视频编码技术和R TP/R TCP 传输协议,支持视频实时采集、编码、传输。

实验表明,系统实时监测性能良好,图像解码清晰、稳定,具有很强的实用性和广阔的发展前景。

关键词:视频服务器;H.264;R TP/R TC P ;图像压缩N e w design o f real 2time video ser ver ba sed on embedded L inuxZeng Fa ngang ,Dai Shuguang ,Mu Pi ng πan(College of O ptica l a nd Electronics I nf or mation Engi nee ring ,U ni versit y of S ha nghai f orScience and Technology ,S ha nghai 200093,Chi na )Abstract :Thi s paper int roduces a new de si gn of real 2t ime video server ,which supporti ng vi deo capt uring ,en 2coding and t ransporti ng.The server i s ba sed on embedded Li nux ,and compressi ng t he vi deo by H.264enco 2di ng t echnology 2t he newest st andard published by ITU 2T 2a nd R TP/R TCP t ransporti ng protocol.The Expe ri 2ment result s show t hat t he high qualit y of compression and stabilization of t ransporti ng.K ey w or ds :vi deo server ;H.264;R TP/R TCP ;video comp re ssio n1 引 言视频监控系统是日常生产生活中的重要辅助设备,应用十分广泛。

基于嵌入式Linux的视频监控系统

基于嵌入式Linux的视频监控系统

近年来 , 视频监 控在 各行 各业得 到 了广泛 应用 , 但
通讯 , 现 、 传输距离短 、 功耗 高、 需要有人 值守和软件开放性较差等缺点 J而基 . 于 A M 处理器 的嵌入式视频监控系统把从 摄像头 R 9 采集到的图像数据压缩后 , 通过 网络协议栈打包发送 到 It t ne 网络 上 , me 因此 用 户 可 以通 过 因特 网 在 任 何 地点从客户端观看到该设备采集 的图像. 该系统一方 面可以在 I e t n me 上传输 图像数据 , t 基本上不受距 离 限制, 无须重新布线 , 于安装 , 护; 便 维 另一方 面采用 A M技术解决 了传统单 片机处理和传输 图像大数据 R 速 度过 慢 ,ah存 储 量小 , 能 够 实 现 图像 采 集 的 实 l fs 不
序 . 用嵌 入 式 系统 的特 点 和优 点提 高 了视 频 采 集 系统 的应 用性 能及 范 围 , 到 了很 好 的 图像 质 量 , 利 得
关 键 词 : MO C S图像 传 感 器 ;嵌 入 式 Ln x iu ;设 备 驱 动 程 序 ;A M ;视 频 采 集 系统 R 9 中图 分 类 号 :N 1. T 998 文献标识码 : A 文章 编 号 :17 ・2 X 20 )2 0 6 —4 6 104 ( 07 0 ・0 5 0
位处 理 器 C U采用 M t o P oo l r a的龙 珠处 理 器 ; 图像 采 集模 块 中 的 C S图像 采 集 芯 片 采 用 O iio MO mnVs n公 i 司的 0 76 _. 统硬件 平 台结构 图如 图 1 V 603 系 J 所示 .
系统上 电之后 , R 9将通过 I AM c总线对 C O M S 图像传感器的工作寄存器进行初始化设置 , 如开窗 口 位置 、 逐行扫描方式 、 动曝光 、 自 自动 白平衡等, 以便使
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于嵌入式linux的视频图像采集[摘要] 本文主要介绍在linux操作系统、arm xsbase270平台上,利用linux内核中已经植入video4linux函数库的数据结构和api函数,通过ov511摄像头实现视频采集的方案,本方案采用qt designer为开发环境,以效率较高的mmap(内存映射)方式截取视频;可保存单张的图片,也可保存为视频。

[关键词] 视频采集 video4linux 嵌入式linux mmap一、引言随着多媒体和通信技术的发展,越来越多的人希望能够直接通过屏幕,看到所要监控的信息。

如:视频监控、webcam、视频会议和可视电话,摄像机等。

嵌入式系统的发展越来越集成化,功能也越来越强大。

本文论述的是基于嵌入式linux系统的视频采集模块的设计与实现。

由于linux对视频的支持是通过video4linux提供的。

并且red hat9.0内核中已经包含了video4linux软件包,所以利用video4linux编程接口就可以在xscale270平台实现对ov511 usb 摄像头图像数据的采集;使用qt进行界面设计,同时对需要的图像进行保存。

最终通过交叉编译连接,生成在arm平台上运行的程序。

作为大学生创新项目,通过相关的开发与研究,可以熟练地掌握嵌入式系统的开发流程,以及对其中涉及到的相关技术有较为深入的理解。

二、系统内核的定制在linux系统下对摄像头的支持是通过内核中video4linux模块的加载来实现的,而该模块的加载可以是静态加载也可以是动态加载。

1.静态加载这种加载方式使视频支持模块嵌在新生成的内核中;虽然会使内核的尺寸变大,但系统运行可靠。

其基本流程是:(1)运行make menuconfig或make xconfig;(2)选择multimedia device->下的video for linux(选为*号标示;这个选项的目的是加载video4linux模块,为视频采集设备提供了编程接口);(3)在usb support->目录下,选择support for usb和 usb camera ov511 support(同样选为*号标示;这使在内核中加入了对ov511接口芯片的usb数字摄像头的驱动支持);(4)保存配置并退出;(5)make dep;make zimage此时在/tftpboot下就生成了带有ov511驱动的内核。

2.动态加载这种加载方式不会将视频支持模块嵌在新生成的内核中,只是告诉linux系统在需要的时候以模块方式调用,所以生成的内核相对较小。

与静态加载相比差别在于选择usb camera ov511 support 时选为标示;另外,还要运行make modules编译模块,其它的步骤与静态加载相同。

三、用video4linux api获取视频图像在linux系统中将设备视为特殊文件以便于对其进行操作。

要用video4linux api获取视频图像,首先,打开视频设备;这通过调用open函数来实现,它返回设备文件描述符,以后的系统调用函数就使用该描述符来对设备进行操作;接着,读取设备信息;这可以得到结构类型各成员域中有关摄像头的信息;然后,设置设备的属性,比如图像的亮度、对比度等等。

最后,进行视频采集。

有两种方法实现视频数据的获取:1.文件读写文件读写的方式是通过read()和write()函数对摄像头进行读写,然后分配缓冲区存放。

这样每次都要调用read()对数据进行拷贝,设备的速度相对于内存的速度来说的比较慢的。

2.内存映射在linux下,设备就是文件,文件的读写是慢速的,mmap方法可以将普通文件映射进内存,这样就可以通过访问内存的速度来访问文件。

图像的信息是非常大的,采用mmap进行读取数据,会整体提高采集性能。

四、视频采集的实现1.视频采集时一些参数的初始化定义的函数原型为v4l_grab_init(v4l_device *vd,int width,int height)参数vd为自定义的数据结构struct_v4l_device,设置宽、高、帧使用情况的属性等。

该函数的重点代码如下:vd->mmap.width = width;vd->mmap.height = height;vd->mmap.format = vd->picture.palette;vd->frame =0;vd->framestat[0] =0;vd->framestat[1] =0;vd->frame为当前帧,framestat[]标记该帧是否已被使用。

0表示未被使用2.获取支持的帧数和基地址v4l_get_mbuf( v4l_device *vd )v4l_mmap(v4l_device *vd)首先,使用vidiocgmbuf命令将摄像头的帧缓存的大小映射到vd->mbuf.size,正使用的帧(0或1)映射到vd->mbuf.frames中,执行完该命令后,就可以用mmap函数将缓存映射到内存中了。

if(ioctl(vd->fd,vidiocgmbuf,&(vd->mbuf))map中,这样才能对获取到的数据进行操作。

在mmap函数里prot_read表示可读取该内存页, prot_write 则是可写入, map_shared 则是让这块mapping的区域和其它进程共享。

第一个参数为0是启始位置,vd->mbuf.size则是长度(length)。

vd->fd则是设备的文件描述符,最后一个参数是offset。

if((vd->map =(unsigned char*)mmap(0,vd->mbuf.size,prot_read|prot_write,map_shared,vd->fd,0)) mmap.frame =frame;if(ioctl(vd->fd,vidiocmcapture,&(vd->mmap))framestat[frame] =1;因为之前用framestat[]数组来记录哪个frame已经被使用,所以一开始要先判断目前的frame是否已经被使用:if (vd->framestat[frame]){printf(“already used.\\n”, frame);return -1;}如果没有被使用,就把mmap的frame填入frame编号,然后利用vidiocmcapture取影像。

结束前要把目前frame的状态标示成使用中,然后把framestat指定成现在的frame,完成工作后离开。

ioctl(vd->fd, vidiocmcapture, &(vd->mmap ) )是非阻塞的函数。

4.等待一帧截取结束该功能由int v4l_grab_sync(v4l_device *vd ,int a)函数实现,参数vd为自定义的数据结构struct _v4l_device,frame值为0或1,意为第0帧或第1帧数据,成功返回0,失败则为-1;代码如下: if(ioctl(vd->fd,vidiocsync,&frame) framestat[frame] = 0;return 0;ioctl(vd->fd, vidiocsync, &(frame))是阻塞的。

利用vidiocsync等待完成后,该函数成功返回则表示表明一帧采集已完成,采集到的图像数据放到内存区中,读取该内存区中的数据便可得到图像数据。

別忘了将目前frame的状态改回未被使用。

截取出来的视频数据放到了之前利用mmap()方式将device所map 的内存里,因为我们是利用mmap方式,所以会有2个(或以上)的frame,这时就要计算一下offset,才知道到底目前的视频资料被放到那裡了。

5.获得当前视频数据的地址函数实现如下,参数vd为自定义的数据结构struct_v4l_device,函数返回值为当前视频数据地址。

基地址是通过mmap 函数得到的,要区分出第0与第1帧的地址,就需将帧的偏移地址算出。

unsigned char *v4l_get_address(v4l_device *vd,int frame) {return (vd->map + vd->mbuf.offsets[frame]);}6.视频的保存对采集到的视频,系统默认保存为扩展名为.rgb24文件中,文件名是以视频画面的宽、高和保存的时间命名的。

实现的关键代码如下:sprintf(f,”./picture/%dx%d_%d_%d_%d.rgb24”,set_width ,set_height,time2.hour(),time2.minute(),time2.second());if((fp=fopen(f,”a+”))==null){perror(“open error!\\n”);return -1;}fwrite(buf,x*y*3,1,fp);fclose(fp);五、qt界面设计qt是一个多平台的c++图形用户界面应用程序框架。

它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。

qt是完全面向对象的很容易扩展,并且允许真正地组件编程。

qt设计器是用来设计和实现用户界面并能够在多平台下使用的一种工具。

qt设计器可以使用户界面设计实验变得简单。

在任何时候你可以要求所生成的代码去重建qt设计器产生的用户界面文件,并可以根据你的喜好来改变你的设计。

根据系统功能的需要,通过使用qt提供的相关控件即可方便地设计出如图一所示的视频采集系统的运行主界面。

六、结束语作为大学生创新性实验项目,通过设计制作一个相对完整的视频数据采集系统,在学到许多实际技能的同时,也意识到自身理论的不足。

例如,视频数据的采集率还不能做的较高;尽管在开发中试图采用双线程采集,但由于受视频video4linux模块的限制,在判断是否采集结束和显示的时候,另外一帧并没有停止采集,当再次判断另外一帧时,时间就少了很多,所以双线程的方法没有明显的提高帧数。

参考文献:[1]陈俊宏.embedded linux嵌入式系统原理与实务[m].北京:中国铁道出版社,2004.184.[2]郑灵翔.嵌入式linux系统设计.北京:北京航空航天大学出版社,2008.217-222.[3](英)neil matthew, (英)richard stones著.陈健,宋健健译.linux程序设计(第三版)[m].北京:人民邮电出版社,2007.122-127.[4]qt帮助文档[eb].[5]linux的应用——video streaming探讨(5).本文系福建省大学生创新性实验计划项目编号:mjcx0805。

相关文档
最新文档