
正文
关于linux命令pict的信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
文字档案的副档名是什么?
文字档案的副档名是什么?
纯文字文件的副档名是.txt。文字文件是以TXT字尾名的档案linux命令pict,在windows页面重点及滑鼠右键-〉新建-〉在下拉子选单中有文字文件一项。
详细:txt档案是微软在作业系统上附带的一种文字格式,是最常见的一种档案格式,早在DOS时代应用就很多,主要存文字资讯,即为文字资讯,在微软在作业系统等于直接存,就是它了,多用的作业系统得使用记事本等程式储存,大多数软体可以检视如记事本,浏览器等等。
通俗:txt即文字档案,在桌面或资料夹右键即可建立。 TXT格式是一种文字文件,TXT(外语缩写)即副档名。
代表文字档案的副档名是什么
代表文字档案的副档名是 .TXT
祝您生活愉快。
怎么改文字档案的副档名
开启我的电脑,在选单里选择工具,点资料夹选项,再在检视里"隐藏已知档案型别的副档名"前的勾去掉后点确定,在就可以修改了,打比方TXT用重新命名改把后面的TXT去掉,输入AVS就可以了
文字档案的副档名有哪些?
副档名是档案型别的标志,WinXP会依据副档名赋予档案不同的图示,并可启动对应的关联程式对其进行相关操作。故而,修改副档名会直接影响一个档案的正常使用,为此系统多会提出警告,让使用者明白这是十分危险的操作,改副档名对初学者似乎成了一个禁区。 抱着怀疑的态度,我进行了一番摸索,终于深刻领悟到,拘泥于传统的束缚,实为学习电脑知识的大敌。不知各位看了下面的剖析是否会有同感linux命令pict! 一、副档名与档案格式 大家知道Win9X启动画面,可用启动盘根目录下Logo.sys档案生成,它原本是个BMP图片,只是改动一个位元组后(为使画面底端滚动条动起来,将该档案第32h位元组处的00h改成ECh),换了副档名而巳。需指出的是,此档案并不受副档名的限制。不信你用任一款磁碟编辑器(如Hedit或Diskedit),开启Io.sys档案查询字串“Logo.sys” (如图1),将它改为“1234.123”,再把Logo.sys档案也重新命名成1234.123,你会发现该画面依然能在启动时出现。由此可见,一些系统直接呼叫的档案,是不分副档名的;且副档名不同,并不代表档案格式不同,有些档案只需简单的改变副档名,就能完成档案型别的转换。还可举出一些例子,如:Win98系统能用BMP图片做图示,无论把一个BMP图片改成什么副档名,只要你仍指定用它做图示,保证没问题(ICO档案也是如此)。 其实有的档案型别,如:SYS型别,并无固定的档案格式。同样Msdos.sys在旧版DOS中是二进位制档案,而到了Win9X下便成为文字档案了。还有的型别原本就是同一种格式,只是换了副档名而巳。如:SCR型别(萤幕保护程式),它可是地道的可执行档案。改一个SCR副档名为EXE试试,执行它将开启屏保设定对话方块(如果有的话),若在命令列加上“/S”引数便能执行此萤幕保护了。把它放在自己的软体中来呼叫(有些程式设计软体只能呼叫EXE型别档案),定会增色不少! 必须着重提一笔的是TXT型别(纯文字),诸如BAT、INI、INF、HTM、HTT等许多常见而重要的档案型别都是纯文字格式。更多的例子不胜列举,以至我已养成一种习惯,只要碰到有不明用途的小档案(64KB以下),总喜欢用记事本开启看看。这些型别的档案都有一些比较规则的排列布局,以及特定的关键字串。平时注意多观察多研究,往往能找出其中的规律和关键字的用法,从而使自己拥有一条深入学习软体并挖掘软体潜力的捷径。 还是举个例项:刚装Win98时,工作列的[快速启动]组中有个[显示桌面]图示,后来无意间被我删掉了。经过研究,发现其本质也是文字格式。开启记事本,编辑如图2所示的一段内容: 用副档名SCF存档,便又有了个[显示桌面]图示。同理,再找几个SCF档案,也许你会有更多的发现。 二、副档名与档案型别 系统是按档案型别确定关联程式的。这里所说的“档案型别”,是指[资料夹选项]中[档案型别]栏列出的各个专案。随着Windows日渐深入人心,必须更新一个传统认识上的误区:副档名与档案型别划等号。虽然常规方法只能建立二者之间一一对应的关系,但通过登录档这个“后门”,却总会有些特例。 在登录档中,副档名和档案型别名是HKEY_CLASSES_ROOT主键(以下简称HKCR)下的同一级主键,副档名主键的预设值正是其对应的档案型别主键名。一般来说,同一档案型别能对应多个副档名,如[JPEG档案]型别有JPG、JPE、JPEG等副档名;[文字文件]型别有TXT、EXC、DIC等副档名(如图3);此外还有[HTML档案]、[MPEG档案]等型别均是如此。 产生这种现象的原因,大部分是出于相容性的考虑。而同一时刻,一个副档名对应的档案型别却是唯一的,说“同一时刻”是因为并非一个副档名只能对应一种档案型别。很多随系统安装一起注册的副档名,被其它程式改变其所属型别后,仍储存著原型别记录,当新型别被解除安装后,它还可自动恢复。 典型的例子:在安装ACDSee32后,你可以从选项中自动把JPG图片重新注册为[ACDSee JPG Image]型别,这时开启登录档将会看到HKCR\.jpg主键下多了个UndoClass主键(如图4),预设值还是jpegfile(原型别主键名)。 特殊情况下没有对应副档名照样也能注册档案型别。例如:[资料夹]型别和[驱动器]型别,它们都
副档名是档案型别的标志,WinXP会依据副档名赋予档案不同的图示,并可启动对应的关联程式对其进行相关操作。故而,修改副档名会直接影响一个档案的正常使用,为此系统多会提出警告,让使用者明白这是十分危险的操作,改副档名对初学者似乎成了一个禁区。 抱着怀疑的态度,我进行了一番摸索,终于深刻领悟到,拘泥于传统的束缚,实为学习电脑知识的大敌。不知各位看了下面的剖析是否会有同感!
一、副档名与档案格式
大家知道Win9X启动画面,可用启动盘根目录下Logo.sys档案生成,它原本是个BMP图片,只是改动一个位元组后(为使画面底端滚动条动起来,将该档案第32h位元组处的00h改成ECh),换了副档名而巳。需指出的是,此档案并不受副档名的限制。不信你用任一款磁碟编辑器(如Hedit或Diskedit),开启Io.sys档案查询字串“Logo.sys” (如图1),将它改为“1234.123”,再把Logo.sys档案也重新命名成1234.123,你会发现该画面依然能在启动时出现。由此可见,一些系统直接呼叫的档案,是不分副档名的;且副档名不同,并不代表档案格式不同,有些档案只需简单的改变副档名,就能完成档案型别的转换。还可举出一些例子,如:Win98系统能用BMP图片做图示,无论把一个BMP图片改成什么副档名,只要你仍指定用它做图示,保证没问题(ICO档案也是如此)。 其实有的档案型别,如:SYS型别,并无固定的档案格式。同样Msdos.sys在旧版DOS中是二进位制档案,而到了Win9X下便成为文字档案了。还有的型别原本就是同一种格式,只是换了副档名而巳。如:SCR型别(萤幕保护程式),它可是地道的可执行档案。改一个SCR副档名为EXE试试,执行它将开启屏保设定对话方块(如果有的话),若在命令列加上“/S”引数便能执行此萤幕保护了。把它放在自己的软体中来呼叫(有些程式设计软体只能呼叫EXE型别档案),定会增色不少! 必须着重提一笔的是TXT型别(纯文字),诸如BAT、INI、INF、HTM、HTT等许多常见而重要的档案型别都是纯文字格式。更多的例子不胜列举,以至我已养成一种习惯,只要碰到有不明用途的小档案(64KB以下),总喜欢用记事本开启看看。这些型别的档案都有一些比较规则的排列布局,以及特定的关键字串。平时注意多观察多研究,往往能找出其中的规律和关键字的用法,从而使自己拥有一条深入学习软体并挖掘软体潜力的捷径。 还是举个例项:刚装Win98时,工作列的[快速启动]组中有个[显示桌面]图示,后来无意间被我删掉了。经过研究,发现其本质也是文字格式。开启记事本,编辑如图2所示的一段内容: 用副档名SCF存档,便又有了个[显示桌面]图示。同理,再找几个SCF档案,也许你会有更多的发现。
二、副档名与档案型别
系统是按档案型别确定关联程式的。这里所说的“档案型别”,是指[资料夹选项]中[档案型别]栏列出的各个专案。随着Windows日渐深入人心,必须更新一个传统认识上的误区:副档名与档案型别划等号。虽然常规方法只能建立二者之间一一对应的关系,但通过登录档这个“后门”,却总会有些特例。 在登录档中,副档名和档案型别名是HKEY_CLASSES_ROOT主键(以下简称HKCR)下的同一级主键,副档名主键的预设值正是其对应的档案型别主键名。一般来说,同一档案型别能对应多个副档名,如[JPEG档案]型别有JPG、JPE、JPEG等副档名;[文字文件]型别有TXT、EXC、DIC等副档名(如图3);此外还有[HTML档案]、[MPEG档案]等型别均是如此。 产生这种现象的原因,大部分是出于相容性的考虑。而同一时刻,一个副档名对应的档案型别却是唯一的,说“同一时刻”是因为并非一个副档名只能对应一种档案型别。很多随系统安装一起注册的副档名,被其它程式改变其所属型别后,仍储存著原型别记录,当新型别被解除安装后,它还可自动恢复。 典型的例子:在安装ACDSee32后,你可以从选项中自动把JPG图片重新注册为[ACDSee JPG Image]型别,这时开启登录档将会看到HKCR\.jpg主键下多了个UndoClass主键(如图4),预设值还是jpegfile(原型别主键名)。 特殊情况下没有对应副档名照样也能注册档案型别。例如:[资料夹]型别和[驱动器]型别,它们都是用由一长串字元组成的CLSID来注册的。还有像众多网路方面的协议型别,为适应不同操作平台的需要,也没有用副档名注册。我们不难发现,绝大部分重要的档案型别及各种特定操作(如:剪下、复制)都有自己的CLSID,研究它们非常枯燥,有耐心的朋友,不妨自己尝试看看。这时,所谓“档案型别”已经超越出传统意义上的“档案”范畴,有了更广义的内涵。 此外,还想告诉大家个小窍门(如图5):在登录档里任意档案型别主键中,新建名为EditFlags的[二进位制值](显示的是16进位制数,且低位在前,高位在后),它能决定所对应型别的编辑级别。当取值是01 00 00 00时,在[档案型别]栏里便找不到该型别的身影,使别人无法编辑;当值为d2 01 00 00时,则其在上栏中会显示,却不能删除,也不能修改型别说明及关联操作。还可取很多值,如将这些值用二进位制来表示,你就会明白,其实每一位都对应着一个按钮或一个可编辑的内容(1代表禁止,0代表启用,只有二进位制数最后两位是10时,该型别才会显示),多改改就能理解它的含义了。
三、副档名与关联程式
在Win98系统中,一种档案型别可以设定多个关联操作,对应不同的应用程式。建立一个程式与某型别档案的关联,有不少办法:对于未知型别,其右键选单中会有[开启方式...]项,点选它便能选择用于[开启]操作的关联程式;已建有关联程式的型别,按住Shift的同时点右键,也会在弹出选单中出现[开启方式...]项,通过它能改变关联;若想实现一种档案型别与多个程式关联,用[档案型别]栏修改已能满足大部分需要,不过我还是喜欢直接编辑登录档,因为如此,常会有意外收获。喜欢自编软体的朋友,还可以利用安装程式提供的功能,直接生成登录档项,来注册自己特有的档案型别。 前面说过,使用文字方式的档案型别很多,我们何不设定所有型别都与记事本(Notepad.exe)关联呢?开启登录档编辑器,在HKCR\*\shell下新建一个主键Notepad,把右侧预设值设为“用记事本开启”;再新建下一级主键Command,把预设值设为“Notepad.exe” “%1”(如图6)。这样当我们对任意档案点右键时,弹出选单中会多出一个[用记事本开启]项,点选它便能快速编辑各种以文字方式储存的档案型别了,这也是经常找到一些档案秘密的好办法。
四、副档名与档案加密
档案加上副档名是为了方便系统给它们分类,反过来,如果我们“篡改”副档名,就会打乱或错位这种分类,从而达到加密的目的。也许这是最简单的一种加密方法了,而且往往出人意料,有很好的加密效果,别说是“菜鸟”,就是一些“老鸟”也未必想得到。我曾发现一些软体用过此法。下面是个人的一些设想,供大家借鉴。 将可执行副档名改成任意非可执行型别(如 .123),使别人无法知道它的原型别,达到禁止其独立使用的目的;设计相关程式在呼叫它时,能够自动改回副档名(EXE)再执行,执行结束恢复原副档名加密,这便起到了隐藏重要可执行档案的作用。对于软盘安装程式,自解压包往往是要保密的,一旦被人绕过安装程式自行解压,可就少有秘密可言了。现在我们同样能改副档名加密自解压包,在安装时拷贝它至硬碟并换回EXE副档名,待解压完毕即删除硬碟上的复本,如此既提高了解压速度又有一定的加密效果。 在制作对外发行软体时,常用到一种防复制或限制使用的加密手段——档案暗贴,即在硬碟某处建一个档案,用来校验软体合法性或记录使用次数和时间。这种方案有个弱点,就是暗贴做成档案这种形式易被发觉。如今各种监测软体会迅速找到这些怪异档案,之所以说怪异,只因它们或无副档名、或副档名大多没见过,自然引起解密者的怀疑。我想对付这种情况不妨玩个“瞒天过海”的手法,比方说:我们把暗贴(多是文字档案)改副档名为DLL(假设自己软体中包含不少DLL档案),并把它与众多兄弟一起,放到系统目录中那庞大的“DLL队伍”之中。如此一来,不仅不易察觉,即使一旦被发现,也很快便会被当成是“动态连结库”而“忽略不计”的。对于程式指名呼叫的档案,改副档名后不会影响暗贴发挥其应有的作用。此法的核心就是要突破常规,抓住人们的思维惰性。 上述围绕副档名所作的文章,是我平时使用中积累的一点小经验,仅想借此拓展大家的思路,希望能起到抛砖引玉的作用
副档名 档案型别 开启方式
.aiff 声音档案 Windows media Player
.!!! Netants 暂存档案 Netants
.ani 动画滑鼠
.arj 压缩档案 ARJ
.avi 电影档案 Windows media Player
.awd 传真文件
.bak 备份档案
.bas Basic 语言 Basic
.bat DOS批处理档案
.bin MAC 二进位制码档案 Stuffit Expander
.bmp 图象档案 画图/看图软体
.cab 压缩档案 Winzip
.cdr Corel图画档案 Corel Draw
.chk Scandisk检察后制作的档案 可以删掉
. DOS命令档案 自执行
.cpx Cryptapix加密图片档案 Cryptapix
.cur 静态滑鼠
.dbf 资料库档案 dBase, FoxBase, Aess
.dll 应用程式扩充套件
.doc 文件档案 Word
.dwg AutoCAD档案 AutoCAD
.eps Illustrator 图画档案 Adobe Illustrator
.exe 执行档案 自执行
.fon 字型档案
.gb 国标码档案 南极星文书处理
.get Getright 暂存档案
.gif 256色图象档案 画图/看图软体
.gz 可供UNIX或LINUX使用的压缩档案 Winzip
.hqx Macintosh 档案 Stuffit Expander
.htm 网页 浏览器
. 网页 浏览器
.ico 图示
.ini 配置设定 笔记本或WordPad
.ipx IPX演示档案 浏览器加装IPX 外挂
.jiff 图象档案 画图/看图软体
.jpeg 压缩过的图象档案 画图/看图软体
.jpg 压缩过的图象档案 画图/看图软体
.js JavaScript
.lnk 快捷方式连线档案 连线档案的相应程式
.m3u Winamp播放列表 Winamp
.mid 声音档案 Windows media Player
.mov Quicktime影像档案 Quick Time
.mp3 压缩音乐档案 Winamp
.mpeg 影像 Windows media Player
.mpg 影像 Windows media Player
.njx 南极星文件 南极星文书处理
.pcb 电子电路图设计档案 Protel PCB
.pdf 行动式文件格式,内含图片文字等等 Adobe Acrobat, Adobe Acrobat Reader
.pm5 PageMaker 5 排版档案 Page Maker
.ppt Power Point 档案 Microsoft Power Point
.ps GhostScript
.psd Photoshop档案 Adobe Photoshop
.pub Publisher排版档案 Microsoft Publisher
.qt Quicktime影像档案 Quick Time
.ra Real Audio声音档案 Real Audio
.ram Real Audio影像档案 Real Audio
.rar 压缩档案 Winrar
.rsf Richwin 字型档案
.sch 电子原理图设计档案 Protel Schematic
.scr 屏保档案
.sea Macintosh 启动档案
.sit 压缩 Stuffit Expander
.swf Flas *** 档案 浏览器加装Macromedia flash 外挂
.sys 系统档案
.tar UNIX压缩档案 Winzip
.tif 高质量图象档案 画图/看图软体
.tiff 高质量图象档案 画图/看图软体
.tmp 暂存档案 可以删掉
.ttf 字型档案
.txt 纯文字档案 笔记本或全部文书处理系统
.vbs Visual Basic 程式设计档案 Microsoft Viasual Basic
.viv VIVO影像档案 浏览器加装VIVO 外挂
.vqf 压缩声音档案 Yamaha SoundVQ Player
.wav 未压缩的声音档案 Windows media Player
.wk1 Lotus 123 试算软体档案 Lotus 123, Excel
.wq1 Q-Pro 试算软体档案 Q-Pro, Excel
.wri Write文字文件 Word
.xls Excel 试算软体档案 Microsoft Excel
.Z UNIX压缩档案 Winzip
.zip 压缩档案 Winzip
影象档案:
bmp Windows or OS/2 Bitmap
clp Windows Clipboard
cup Dr. Halo
dib Windows or OS/2 DIB
emf Windows Enhanced Meta file
eps Encapsulated PostScript
fpx Flash Pix
gif Compuserver
iff Amiga
img GEM Paint
jpg JPEG - JFIF Compliant
lbm Deluxe Paint
mac Mac Paint
msp Macrosoft Paint
pbm Potable Bitmap
pct Macintosh Pict
pcx Zsoft Paintbrush
pic PC Paint
png Portable Neork Graphics
ppm Portable Pixelmap
psd Photoshop
psp Paint Shop Pro Image
ras Sun Raster Image
raw Eaw File format
rle Windows or CompuServer RLE
sct SciTex Continuous Tone
tga Truevision Targa
tif Tagged Image file format
wmf Windows Meta File
wpg WordPefect Bitmap
怎样更该文字档案的副档名
在资料夹选项里,点检视选项卡,里面有个,隐藏副档名的,把哪个点掉,然后档案就显示***.txt了,这时候就可以更改档案的副档名了,把txt改为irc就可以了,另存的话可能改出来的档案是***.txt.irc了
.RTF是不是无格式的文字档案的副档名
.rtf是windows系统写字板预设副档名,.txt才是无格式文字档案的副档名。
什么是无格式的文字副档名
文字档案储存时,选择"所有档案"格式,然后在档名中输入'*.',不要输入副档名就可以了
win7记事本档案的副档名是什么
记事本的副档名是txt
下列档案格式中,非格式化文字档案的副档名是( ) TXT,DOC,RTF,PDF。
相关问答
Q1: video4linux(v4l)使用摄像头图像采集的实验 在fedora下ioctl(vd->fd, VIDIOCGMBUF, &(vd->mbuf)) 执行失败
1.video4linux基础相关
1.1 v4l的介绍与一些基础知识的介绍
I.首先说明一下video4linux(v4l)。
它是一些视频系统,视频软件,音频软件的基础,经常使用在需要采集图像的场合,如视频监控,webcam,可视电话,经常应用在embedded linux中是linux嵌入式开发中经常使用的系统接口。它是linux内核提供给用户空间的编程接口,各种的视频和音频设备开发相应的驱动程序后,就可以通过v4l提供的系统API来控制视频和音频设备,也就是说v4l分为两层,底层为音视频设备在内核中的驱动,上层为系统提供的API,而对于我们来说需要的就是使用这些系统的API。
II.Linux系统中的文件操作
有关Linux系统中的文件操作不属于本文的内容。但是还是要了解相关系统调用的作用和使用方法。其中包括open(),read(),close(),ioctl(),mmap()。详细的使用不作说明。在Linux系统中各种设备(当然包括视频设备)也都是用文件的形式来使用的。他们存在与dev目录下,所以本质上说,在Linux中各种外设的使用(如果它们已经正确的被驱动),与文件操作本质上是没有什么区别的。
1.2 建立一套简单的v4l函数库
这一节将一边介绍v4l的使用方法,一边建立一套简单的函数,应该说是一套很基本的函数,它完成很基本的够能但足够展示如何使用v4l。这些函数可以用来被其他程序使用,封装基本的v4l功能。本文只介绍一些和摄像头相关的编程方法,并且是最基础和最简单的,所以一些内容并没有介绍,一些与其他视频设备(如视频采集卡)和音频设备有关的内容也没有介绍,本人也不是很理解这方面的内容。
这里先给出接下来将要开发出来函数的一个总览。
相关结构体和函数的定义我们就放到一个名为v4l.h的文件中,相关函数的编写就放在一个名为v4l.c的文件中把。
对于这个函数库共有如下的定义(也就是大体v4l.h中的内容):
#ifndef _V4L_H_
#define _V4L_H_
#include sys/types.h
#include linux/videodev.h //使用v4l必须包含的头文件
这个头文件可以在/usr/include/linux下找到,里面包含了对v4l各种结构的定义,以及各种ioctl的使用方法,所以在下文中有关v4l的相关结构体并不做详细的介绍,可以参看此文件就会得到你想要的内容。
下面是定义的结构体,和相关函数,突然给出这么多的代码很唐突,不过随着一点点解释条理就会很清晰了。
struct _v4l_struct
{
int fd;//保存打开视频文件的设备描述符
struct video_capability capability;//该结构及下面的结构为v4l所定义可在上述头文件中找到
struct video_picture picture;
struct video_mmap mmap;
struct video_mbuf mbuf;
unsigned char *map;//用于指向图像数据的指针
int frame_current;
int frame_using[VIDEO_MAXFRAME];//这两个变量用于双缓冲在后面介绍。
};
typedef struct _v4l_struct v4l_device;
//上面的定义的结构体,有的文中章有定义channel的变量,但对于摄像头来说设置这个变量意义不大通常只有一个channel,本文不是为了写出一个大而全且成熟的函数库,只是为了介绍如何使用v4l,再加上本人水平也有限,能够给读者一个路线我就很知足了,所以并没有设置这个变量同时与channel相关的函数也没有给出。
extern int v4l_open(char *, v4l_device *);
extern int v4l_close(v4l_device *);
extern int v4l_get_capability(v4l_device *);
extern int v4l_get_picture(v4l_device *);
extern int v4l_get_mbuf(v4l_device *);
extern int v4l_set_picture(v4l_device *, int, int, int, int, int,);
extern int v4l_grab_picture(v4l_device *, unsigned int);
extern int v4l_mmap_init(v4l_device *);
extern int v4l_grab_init(v4l_device *, int, int);
extern int v4l_grab_frame(v4l_device *, int);
extern int v4l_grab_sync(v4l_device *);
上述函数会在下文中逐渐完成,功能也会逐渐介绍,虽然现在看起来没什么感觉只能从函数名上依稀体会它的功能,或许看起来很烦,不过看完下文就会好了。
前面已经说过使用v4l视频编程的流程和对文件操作并没有什么本质的不同,大概的流程如下:
1.打开视频设备(通常是/dev/video0)
2.获得设备信息。
3.根据需要更改设备的相关设置。
4.获得采集到的图像数据(在这里v4l提供了两种方式,直接通过打开的设备读取数据,使用mmap内存映射的方式获取数据)。
5.对采集到的数据进行操作(如显示到屏幕,图像处理,存储成图片文件)。
6.关闭视频设备。
知道了流程之后,我们就需要根据流程完成相应的函数。
那么我们首先完成第1步打开视频设备,需要完成int v4l_open(char *, v4l_device *);
具体的函数如下
#define DEFAULT_DEVICE “/dev/video0”
int v4l_open(char *dev , v4l_device *vd)
{
if(!dev)dev= DEFAULT_DEVICE;
if((vd-fd=open(dev,O_RDWR))0){perror(“v4l_open:”);return -1;}
if(v4l_get_capability(vd))return -1;
if(v4l_get_picture(vd))return -1;//这两个函数就是即将要完成的获取设备信息的函数
return 0
}
同样对于第6步也十分简单,就是int v4l_close(v4l_device *);的作用。
函数如下:
int v4l_close(v4l_device *vd)
{close(vd-fd);return 0;}
现在我们完成第2步中获得设备信息的任务,下面先给出函数在对函数作出相应的说明。
int v4l_get_capability(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGCAP, (vd-capability)) 0) {
perror("v4l_get_capability:");
return -1;
}
return 0;
}
int v4l_get_picture(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGPICT, (vd-picture)) 0) {
perror("v4l_get_picture:");
return -1;
}
return 0;
}
对于以上两个函数我们不熟悉的地方可有vd-capability和vd-picture两个结构体,和这两个函数中最主要的语句ioctl。对于ioctl的行为它是由驱动程序提供和定义的,在这里当然是由v4l所定义的,其中宏VIDIOCGCAP和VIDIOCGPICT的分别表示获得视频设备的capability和picture。对于其他的宏功能定义可以在你的Linux系统中的/usr/include/linux/videodev.h中找到,这个头文件也包含了capability和picture的定义。例如:
struct video_capability
{
char name[32];
int type;
int channels;
int audios;
int maxwidth;
int maxheight;
int minwidth;
int minheight;
};capability结构它包括了视频设备的名称,频道数,音频设备数,支持的最大最小宽度和高度等信息。
struct video_picture
{
__u16 brightness;
__u16 hue;
__u16 colour;
__u16 contrast;
__u16 whiteness;
__u16 depth;
__u16 palette;
}picture结构包括了亮度,对比度,色深,调色板等等信息。头文件里还列出了palette相关的值,这里并没有给出。
了解了以上也就了解了这两个简单函数的作用,现在我们已经获取到了相关视频设备的capabilty和picture属性。
这里直接给出另外一个函数
int v4l_get_mbuf(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGMBUF ,(vd-mbuf)) 0) {
perror("v4l_get_mbuf:");
return -1;
}
return 0;
}
int v4l_get_mbuf(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGMBUF ,(vd-mbuf)) 0) {
perror("v4l_get_mbuf:");
return -1;
}
return 0;
}
对于结构体video_mbuf在v4l中的定义如下,video_mbuf结构体是为了服务使用mmap内存映射来获取图像的方法而设置的结构体,通过这个结构体可以获得摄像头设备存储图像的内存大小。具体的定义如下,各变量的使用也会在下文详细说明。
struct video_mbuf
{
int size; 可映射的摄像头内存大小
int frames; 摄像头可同时存储的帧数
int offsets[VIDEO_MAX_FRAME];每一帧图像的偏移量
};
下面完成第3步按照需要更改设备的相应设置,事实上可以更改的设置很多,本文以更改picture属性为例说明更改属性的一般方法。
那么我们就完成extern int v4l_set_picture(v4l_device *, int, int, int, int, int,);这个函数吧
int v4l_set_picture(v4l_device *vd,int br,int hue,int col,int cont,int white)
{
if(br) vd-picture.brightnesss=br;
if(hue) vd-picture.hue=hue;
if(col) vd-picture.color=col;
if(cont) vd-picture.contrast=cont;
if(white) vd-picture.whiteness=white;
if(ioctl(vd-fd,VIDIOCSPICT,(vd-picture))0)
{perror("v4l_set_picture: ");return -1;}
return 0;
}
int v4l_get_mbuf(v4l_device *vd)
{
if (ioctl(vd-fd, VIDIOCGMBUF ,(vd-mbuf)) 0) {
perror("v4l_get_mbuf:");
return -1;
}
return 0;
}
对于结构体video_mbuf在v4l中的定义如下,video_mbuf结构体是为了服务使用mmap内存映射来获取图像的方法而设置的结构体,通过这个结构体可以获得摄像头设备存储图像的内存大小。具体的定义如下,各变量的使用也会在下文详细说明。
struct video_mbuf
{
int size; 可映射的摄像头内存大小
int frames; 摄像头可同时存储的帧数
int offsets[VIDEO_MAX_FRAME];每一帧图像的偏移量
};
下面完成第3步按照需要更改设备的相应设置,事实上可以更改的设置很多,本文以更改picture属性为例说明更改属性的一般方法。
那么我们就完成extern int v4l_set_picture(v4l_device *, int, int, int, int, int,);这个函数吧
int v4l_set_picture(v4l_device *vd,int br,int hue,int col,int cont,int white)
{
if(br) vd-picture.brightnesss=br;
if(hue) vd-picture.hue=hue;
if(col) vd-picture.color=col;
if(cont) vd-picture.contrast=cont;
if(white) vd-picture.whiteness=white;
if(ioctl(vd-fd,VIDIOCSPICT,(vd-picture))0)
{perror("v4l_set_picture: ");return -1;}
return 0;
}
上述函数就是更改picture相关属性的例子,其核心还是v4l给我们提供的ioctl的相关调用,通过这个函数可以修改如亮度,对比度等相关的值。
Q2: 如何利用Video4Linux获取摄像头数据
1. 摄像头的安装
在Linux下常用的摄像头驱动是spca5xx。这个网站还给出linux命令pict了这款驱动支持的摄像头的种类。另外linux命令pict,ov511芯片直接就支持Linuxlinux命令pict,使用者款芯片的摄像头有网眼V2000。我使用的是网眼V2000的摄像头linux命令pict,和Z-Star
301p+现代7131R芯片的摄像头。后一种需要spca5xx的驱动。关于spca5xx的安装方法,网上有很多介绍,这里就不说linux命令pict了。
2. 摄像头的调试
安装好摄像头后,为了测试摄像头能否正常工作,可以用一下软件。比较著名的是xawtv,在网上搜以下可以下载到。安装好后,打开xawtv则可以调试摄像头。
3. Video4Linux 编程获取数据
现有的video4linux有两个版本,v4l和v4l2。本文主要是关于v4l的编程。利用v4l API获取视频图像一般有以下几步:
a 打开设备
b 设置设备的属性,比如图像的亮度,对比度等等
c 设定传输格式和传输方式
d 开始传输数据,一般是一个循环,用以连续的传输数据
e 关闭设备
下面具体介绍v4l编程的过程。首先指出,在video4linux编程时要包含头文件,其中包含了video4linux的数据结构和函数定义。
1)v4l的数据结构
在video4linux API中定义了如下数据结构,详细的数据结构定义可以参考v4l API的文档,这里就编程中经常使用的数据结构作出说明。
首先我们定义一个描述设备的数据结构,它包含了v4l中定义的所有数据结构:
typedef struct
_v4ldevice
{int fd;//设备号
struct video_capability capability;
struct
video_channel channel[10];
struct video_picture picture;
struct video_clip
clip;
struct video_window window;
struct video_capture capture;
struct
video_buffer buffer;
struct video_mmap mmap;
struct video_mbuf
mbuf;
struct video_unit unit;
unsigned char
*map;//mmap方式获取数据时,数据的首地址
pthread_mutex_t mutex;
int frame;
int
framestat[2];
int overlay;
}v4ldevice;
下面解释上面这个数据结构中包含的数据结构,这些结构的定义都在中。
* struct
video_capability
name[32] Canonical name for this interface
type Type of
interface
channels Number of radio/tv channels if appropriate
audios
Number of audio devices if appropriate
maxwidth Maximum capture width in
pixels
maxheight Maximum capture height in pixels
minwidth Minimum capture
width in pixels
minheight Minimum capture height in pixels
这一个数据结构是包含了摄像头的属性,name是摄像头的名字,maxwidth maxheight是摄像头所能获取的最大图像大小,用像素作单位。
在程序中,通过ioctl函数的VIDIOCGCAP控制命令读写设备通道已获取这个结构,有关ioctl的使用,比较复杂,这里就不说了。下面列出获取这一数据结构的代码:
int v4lgetcapability(v4ldevice *vd)
{
if(ioctl(vd-fd,
VIDIOCGCAP, (vd-capability)) 0)
{
v4lperror("v4lopen:VIDIOCGCAP");
return -1;
}
return 0;
}
*
struct video_picture
brightness Picture brightness
hue Picture hue (colour
only)
colour Picture colour (colour only)
contrast Picture
contrast
whiteness The whiteness (greyscale only)
depth The capture depth
(may need to match the frame buffer depth)
palette Reports the palette that
should be used for this image
这个数据结构主要定义了图像的属性,诸如亮度,对比度,等等。这一结构的获取通过ioctl发出VIDIOCGPICT控制命令获取。
* struct video_mbuf
size The number of bytes to
map
frames The number of frames
offsets The offset of each frame
这个数据结构在用mmap方式获取数据时很重要:
size表示图像的大小,如果是640*480的彩色图像,size=640*480*3
frames表示帧数
offsets表示每一帧在内存中的偏移地址,通过这个值可以得到数据在图像中的地址。
得到这个结构的数据可以用ioctl的VIDIOCGMBUF命令。源码如下:
int v4lgetmbuf(v4ldevice
*vd)
{
if(ioctl(vd-fd, VIDIOCGMBUF, (vd-mbuf))0)
{
v4lperror("v4lgetmbuf:VIDIOCGMBUF");
return -1;
}
return
0;
}
而数据的地址可以有以下方式计算:
unsigned char
*v4lgetaddress(v4ldevice *vd)
{
return (vd-map +
vd-mbuf.offsets[vd-frame]);
}
2)获取影像mmap方式。
在video4Linux下获取影像有两种方式:overlay和mmap。由于我的摄像头不支持overlay方式,所以这里只谈mmap方式。
mmap方式是通过内存映射的方式获取数据,系统调用ioctl的VIDIOCMCAPTURE后,将图像映射到内存中,然后可以通过前面的v4lgetmbuf(vd)函数和v4lgetaddress(vd)函数获得数据的首地址,这是李可以选择是将它显示出来还是放到别的什么地方。
下面给出获取连续影像的最简单的方法(为了简化,将一些可去掉的属性操作都去掉了):
char*
devicename="/dev/video0";
char* buffer;
v4ldevice device;
int width =
640;
int height = 480;
int frame =
0;
v4lopen("/dev/video0",device);//打开设备
v4lgrabinit(device,width,height);//初始化设备,定义获取的影像的大小
v4lmmap(device);//内存映射
v4lgrabstart(device,frame);//开始获取影像
while(1){
v4lsync(device,frame);//等待传完一帧
frame
= (frame+1)%2;//下一帧的frame
v4lcapture(device,frame);//获取下一帧
buffer =
(char*)v4lgetaddress(device);//得到这一帧的地址
//buffer给出了图像的首地址,你可以选择将图像显示或保存......
//图像的大小为
width*height*3
..........................
}
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
Q3: (Linux)Openchrome编译出错
我来回答,你应该考虑的不是linux的版本,而是寻找linux版本的驱动。
你可以试试这个:
unichorme驱动。
ubuntu下编译通过 31689希望对你有帮助!
Q4: PICT使用
链接linux命令pict:
提取码:wo9n
1.win+R 打开命令行窗口linux命令pict,输入“cmd”进入命令行页面
2.命令进入pict.exe目录
3.运行pict
4.将测试用输出到指定文件,在pict.exe目录可以看到生成的文件
1.以创建宝宝信息为例,需要输入的项有:名字,身份,生日,年级,每个项都有两个参数:设置,不设置,整理内容如下:
2.在pict.exe目录下创建一个baobao.txt文件,文件名最好为英文
3.在baobao.txt文件输入整理的内容,运行pict,即可得到如下用例:
4.可以对一些条件进行限制:
4.1单条用例中名字,身份,生日,年级只能有一个为不设置linux命令pict;
4.2 要求覆盖所有名字、身份、生日、年级的组合测试项
linux命令pict的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、linux命令pict的信息别忘了在本站进行查找喔。








