在ARM210怎么在开发板写程序上用QT编写的程序显示LogitechC270p摄像头采集的图像,一直滚屏

主题 : tiny210上如何用qt程序实现WiFi管理
级别: 新手上路
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 38 分
&tiny210上如何用qt程序实现WiFi管理
在友善之臂公司的tiny210开发板(linux+ARM)上,想要开发一个这样子的程序:1、搜索并列出附近的WiFi2、选中热点,输入密码,连接WiFi3、断开连接==================================================================友善之臂公司开发了一套命令行的USB WiFi kits工具程序该工具集包含了无线网卡驱动程序,和下面三个实用命令行程序:scan-wifi–用来扫描附近的无线网络start-wifi–用来开启连接无线网络 stop-wifi–停止使用无线网络这三个程序被安装在开发板的/usr/sbin目录下但使用上面的命令行程序还是需要依赖上位机===================================================================请问QT库里有什么类是可以实现这个的吗?或者其他方法也行。
Powered bylinux(6)
摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用
&时间: 16:56:09
Ubuntu10.04
arm linux OS: 3.0.1
arm上 qt-4.7.1
g++ / gcc 4.4.3
arm-linux-g++ / arm-linux-gcc 4.3.2
简单思路:&先在ubuntu上实现,再移植ARM上实现。
在开始之前,先聊聊我辉煌的摄像头选择之路吧。
linux上特别是ARM上对摄像头的使用有一定的要求,并不像Windows上随便买一个插上去就可以使用的。由于咱做的是上层应用,对嵌入式了解还甚少,所以不能更深层地从底层驱动去讲解摄像头方面的知识。就把咱了解到的简单总结一下吧。
也许开发板商家有配对的摄像头模块可以选用,但考虑到价格和通用性,决定放弃这方面的选择。(新手慎重,虽然我也是新手)
比较通用的就是咱常用的USB摄像头,但这里面的选取也有些讲究,玩linux图像采集处理的人一般都知道V4L2(video 4 linux 2),是针对UVC免驱USB设备编程框架,主要用于采集USB摄像头等【1】,具体资料可以查询“百度百科”。(庆幸)现在市面上很多摄像头的输出格式都是UVC,这里可以查看到你的摄像头是否符合V4L2【2】&。
我所使用的摄像头是“现代V26”(这是我从垃圾堆里翻出来的,应该有一定年代了,分辨率是640*480的,编程时使用的是320*240,其他的具体不详,图片是网上搜索的,原因是拍照太麻烦)
我这个摄像头经过后期测试,证明是可以使用的(请看下文)。但又出现一个问题,ubuntu上使用是非常流畅的,但在ARM上使用就非常卡,图片显示实时性要延时2秒左右,相当蛋疼,这怎么搞图像实时处理?
由于后期做视觉处理肯定得用到opencv,那就是说我要处理的是IplImage格式的图像,也就是得做UVC到IplImage的转换,这怎么搞呀,难道真得走UVC转QImage转IplImage这样的流程?
网上查询说有直接输出JPEG格式的摄像头,这样就不用转换,直接处理输出,速度会有很大提升。最后找到了“中星微ZC301”,最后也买了两个(这张是用现代V26自拍的)
蛋疼时刻又开始了,首先这个摄像头输出的确实是JPEG格式,但像素低,而且还要自己上驱动(这是老版摄像头的标志性行为),购买时,淘宝店主说在linux2.6能够正常使用,我说我用的是arm linux3.0.1,店主建议我买回来试试,我一下子花费几十大洋买了两个(JPEG格式的太难找了,看到这个我已经无法自控两眼冒尿了,哪还考虑能不能用呀)。
到手之后,苦B的我赶紧测试,在ubuntu上测试成功(高兴的手舞足蹈),在ARM板上测试,段错误,失败,段错误,再失败,失败,一脸盆的失败!询问淘宝店主,不予技术帮助,找飞凌,电话一辈子都在忙,论坛好几天没回应。网上寻求帮忙,一大堆的废话,无非就是换系统,或者就是改驱动,这不是欺负我上层应用出身吗?,哎,多方寻求无果,颓了。
难道真要我从linux3.0降到2.6吗???这不行,动作太大了,这牵扯的东西太多,很多东西都得重新做。(这是我接触ARM来感觉最为蛋疼的东西,只要某些东西版本一改动,很多东西都得跟着动,更何况这是系统版本呀!!!)
实在没办法,居于我现在能力有限,只能痛下决心,放弃JPEG摄像头,使用UVC摄像头。
至此,摄像头选择完毕!
上面废话了这么多,现在来这是说说实现过程吧。
1、先确保UVC输出格式的USB摄像头是可以使用的,飞凌提供了一个testcam.c的检测程序,可以在ok6410-b 的linux3.0.1版本使用,可以在&这里下载&效果如下图所示:
运行效果:
2、下来就结合QT,实现摄像头的界面显示。
再次,特别感谢这位长相喜人的仁兄帖子《Linux下用QT打开摄像头并显示》【3】&只要把它帖子显示的5个部分代码保存成相应的文件,然后编译即可实现他所说的功能。我的工程文档可以&在此下载。编译使用流程如下:
1)在帖子中复制代码,保存成相应文件;
2)在终端中进入相应文件夹,运行命令:
# qmake -project&& & (生成工程文件)
# qmake&& & (生存Makefile文件)
# make&& & (编译工程)
# ./qtcamera&& & &(运行程序)
如下图所示:
运行结果:
ok,ubuntu上运行没有问题,下来就移植到ARM上运行。
3、把qtcamera程序移植到ARM上,流程如下:
1)在帖子中复制代码,保存成相应文件;
2)把processImage.cpp文件里的摄像头设备名称修改为 /dev/video2 (具体什么名称,可以到arm板子的 /dev 目录里看看,再具体修改)
3)在终端中进入相应文件夹,运行命令:
# qmake-arm -project&& & (生成工程文件,注意你是否编译安装有qmake-arm)
# qmake-arm& & &(生存Makefile文件)
# make&& & (编译工程)
在ARM上运行命令如下:
# ./qtcamera -qws&& & &(运行程序)
如下图所示:
运行结果:
4、ok,摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用至此就完结了。
Good Luck!
再次附上源码下载地址:
1、飞凌提供的OK6410B摄像头测试程序下载
2、qtcamera_PC(Linux下用QT打开摄像头并显示)
3、qtcamera_ARM(OK6410B用QT打开摄像头并显示)
【1】百度百科《V4L2》&/view/5494174.htm
【2】Linux UVC driver and tools&http://www.ideasonboard.org/uvc/
【3】《Linux下用QT打开摄像头并显示》http://www.oschina.net/code/snippet_9
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:37644次
排名:千里之外
转载:45篇
(1)(4)(10)(9)(3)(1)(1)(3)(13)(2)2423人阅读
嵌入式(87)
1)、天嵌公司的给的QT4.5文件系统是有中文字库的,不过我认为有缺陷,之前我说没有,现在发现在/opt/qt-4.5/lib/fonts里面有个unifont文件。调用这个字体就可以显示中文了。代码如下:
int main(int argc, char *argv[])
QTextCodec::setCodecForTr(QTextCodec::codecForName(&unifont&));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(&uinifont&));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(&uinifont&));
QApplication a(argc, argv);
w.setFont(QFont(&unifont&,14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。论坛给的那个程序就是没有这句。所以在板子上运行肯定是有问题的。论坛的那个QT程序大概是在PC机上模拟的。毕竟是模拟啊。
w.setWindowTitle(QObject::tr(&为什么why?&));
return a.exec
注:此方法试过可行,若要显示的中文在另外的文件函数中,则主函数调用那个另外的文件函数,则以上程序不能成功显示中文,应把QTextCodec::setCodecForTr(...)...这三句也放到那个文件函数中,才可以显示出中文
2)、自己去下载一个字库,我下载了一个非官方的字库,叫文泉驿,这个字库当然比那个UNIFONT字库要好,字体比那个要漂亮,而且unifont的字有些大有些小,很不美观。用我自己下载的非官方的文泉驿字库,和文件系统自带的字库都是无法更改字体大小的。也就是说:w.setFont(QFont(&unifont&,14,QFont::Normal));无论那个数字设置成多少都是没用的。字体统一大小,而且还有个纠结的问题,窗口的标题也无法正常显示。w.setWindowTitle(QObject::tr(&为什么why?&));也就是说,只能显示why?,不能显示“为什么?”。
具体如下:
下载文泉驿正黑字体qpf字体库,在可以找到下载,把下载好的字体库解压后的qpf文件放入lib/fonts中(qtX86和arm版本以及移植的文件系统中都放入此子体);再在程序中如1)方法添加代码,只用把uinifont改成wenquanyi即可
3)、终极解决办法,去文泉驿官方网&&下载一个字库回来。里面有很多字库,我选择常用的正黑。正黑字库文件下载地址是:[url]http://downloads.sourceforge.net/project/wqy/wqy-zenhei/0.8.38%20(Pangu)/wqy-zenhei-0.8.38-1.tar.gz?use_mirror=nchc&
下载回来的文件里面有这样一个文件:wqy-zenhei.ttc,我自己改了它的名字,叫zhenghei.ttc(这个由你喜欢),然后放到/opt/qt-4.5/lib/fonts里面,再在主函数里面修改字库的ID:
int main(int argc, char *argv[])
QTextCodec::setCodecForTr(QTextCodec::codecForName(&UTF-8&));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(&UTF-8&));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(&UTF-8&));
QApplication a(argc, argv);
w.setFont(QFont(&zhenghei&,14,QFont::Normal));//这行是关键,没有这行是显示不了中文的。
w.setWindowTitle(QObject::tr(&为什么why?&));
return a.exec
注:此方法自己尝试过了,但是不行,没有显示出中文
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:274153次
积分:3160
积分:3160
排名:第11089名
原创:115篇
转载:27篇
评论:25条
(1)(9)(7)(1)(1)(3)(10)(3)(2)(11)(7)(3)(7)(6)(13)(11)(9)(9)(5)(19)(5)

我要回帖

更多关于 怎么在开发板写程序 的文章

 

随机推荐