版主: wanchong , wangyu , eepwwp , firedom

分享到:
共4条 1/1 1   

学习了几天Linux的感想

    [您是本帖的第2490位阅读者]
落跑的爱丽丝
我是MM
高级会员

最后登陆时间:2014-07-26 23:38:30

直达楼层
1# 发表于 2014-08-23 00:41:41

因为要用到Linux,自己又不太熟悉,所以就要学习学习,本来以为像M3那样有库函数的,结果发现操作底层不是那么一回事.


首先推荐开发环境是有一台Ubuntu 32Bit的虚拟机,然后上面有编译工具,编译时候要指定CROSS_COMPILE和ARCH,一开始以为拿到源码就随便编译好了.原来不行的,然后SPI Flash实在太小了,不忍直视,只好去某东又淘了TF卡,但是还在折腾怎么运行一个Debian.


另外也没发现所谓的IDE闪退问题,不过看了看IO竟然是其他芯片扩展的,忽然对不爽的感觉.所以通过IO方法来搞没什么用途.PCIE位置竟然是,但是PCB制作我不会啊,那个接插件也好像挺贵的.


也不见得怎么搞做,不知道这个板子最后是不是要还的,我也不敢乱飞线,串口做了一条(淘宝有卖贵死),很难看的.本身做这个的,目前USB操作摄像头,人体感应东西来了拍照,并且黄灯,被挡住了红灯,没人绿灯.话说这处理器真的很热.



V4L2接口参考代码:


g_camfd = open(FILE_VIDEO, O_RDWR);  //打开设备

ioctl(g_camfd, VIDIOC_QUERYCAP, &cap); //查询设备能力

ioctl(g_camfd, VIDIOC_S_FMT, &fmt) ;  //设置捕获格式V4L2_PIX_FMT_YUYV,长宽像素

ioctl(g_camfd,VIDIOC_REQBUFS,&req);   //设置缓冲区以及内存映射

ioctl (g_camfd, VIDIOC_QUERYBUF, &buf);

mmap(NULL,buf.length,PROT_READ |PROT_WRITE, MAP_SHARED, g_camfd, buf.m.offset);

ioctl(g_camfd, VIDIOC_QBUF, &buf);  

ioctl (g_camfd, VIDIOC_STREAMON, &type); //开始捕获


循环获取图片以及处理图片:通过VIDIOC_DQBUF取得图片缓存参数之后,用index在映射的内存里面取得数据,数据处理完毕,通过VIDIOC_QBUF将该缓存重新加入队列.

unsigned char* get_buf()
{
 memset(&g_curbuf,0,sizeof(g_curbuf));
 g_curbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 g_curbuf.memory = V4L2_MEMORY_MMAP;
 if(ioctl(g_camfd, VIDIOC_DQBUF, &g_curbuf) == -1)
  return 0;
 return  (unsigned char*)buffers[g_curbuf.index].start; 
}

int return_buf(void)
{
 //重新放入缓存队列
 if(ioctl(g_camfd,VIDIOC_QBUF,&g_curbuf) == -1)
  return -1;
 return 0; 
}

//连续采集以及处理:    
 while(1)
 {
  unsigned char* frame = get_buf();
  //do something...
  return_buf();
 }
因为数据量互传东西也比较多,TF卡拿出来时候还是挺热的.

这几天用过的,觉得不错的资源:

1)http://downloadmirror.intel.com/23171/eng/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z 伽利略的默认系统包,没有p7zip-full感觉很不爽,但是有包管理.

2)http://downloadmirror.intel.com/23171/eng/Board_Support_Package_Sources_for_Intel_Quark_v1.0.0_full_yocto_archive.tar.bz2 无论你是构建什么系统,看了这个绝对不亏的,这可谓是SDK.

3)http://www.tonylabs.com/intel-galileo-connect-sony-playstation-eye-cam.html 国内也有一个搞摄像头的,貌似不知道怎么做.

4)OpenCV文档:http://docs.opencv.org/modules/refman.html


比较菜,大牛们看看就好.

RE: 学习了几天Linux的感想

machinnneee
我是GG
高级会员

最后登陆时间:2014-07-02 12:32:54

2# 发表于 2014-08-23 11:51:15
好详细

RE: 学习了几天Linux的感想

qomoliao
我是GG
高级会员

最后登陆时间:2014-07-08 13:18:17

3# 发表于 2014-08-23 13:18:24
落跑的爱丽丝的原帖

因为要用到Linux,自己又不太熟悉,所以就要学习学习,本来以为像M3那样有库函数的,结果发现操作底层不是那么一回事.


首先推荐开发环境是有一台Ubuntu 32Bit的虚拟机,然后上面有编译工具,编译时候要指定CROSS_COMPILE和ARCH,一开始以为拿到源码就随便编译好了.原来不行的,然后SPI Flash实在太小了,不忍直视,只好去某东又淘了TF卡,但是还在折腾怎么运行一个Debian.


另外也没发现所谓的IDE闪退问题,不过看了看IO竟然是其他芯片扩展的,忽然对不爽的感觉.所以通过IO方法来搞没什么用途.PCIE位置竟然是,但是PCB制作我不会啊,那个接插件也好像挺贵的.


也不见得怎么搞做,不知道这个板子最后是不是要还的,我也不敢乱飞线,串口做了一条(淘宝有卖贵死),很难看的.本身做这个的,目前USB操作摄像头,人体感应东西来了拍照,并且黄灯,被挡住了红灯,没人绿灯.话说这处理器真的很热.



V4L2接口参考代码:


g_camfd = open(FILE_VIDEO, O_RDWR);  //打开设备

ioctl(g_camfd, VIDIOC_QUERYCAP, &cap); //查询设备能力

ioctl(g_camfd, VIDIOC_S_FMT, &fmt) ;  //设置捕获格式V4L2_PIX_FMT_YUYV,长宽像素

ioctl(g_camfd,VIDIOC_REQBUFS,&req);   //设置缓冲区以及内存映射

ioctl (g_camfd, VIDIOC_QUERYBUF, &buf);

mmap(NULL,buf.length,PROT_READ |PROT_WRITE, MAP_SHARED, g_camfd, buf.m.offset);

ioctl(g_camfd, VIDIOC_QBUF, &buf);  

ioctl (g_camfd, VIDIOC_STREAMON, &type); //开始捕获


循环获取图片以及处理图片:通过VIDIOC_DQBUF取得图片缓存参数之后,用index在映射的内存里面取得数据,数据处理完毕,通过VIDIOC_QBUF将该缓存重新加入队列.

unsigned char* get_buf()
{
 memset(&g_curbuf,0,sizeof(g_curbuf));
 g_curbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 g_curbuf.memory = V4L2_MEMORY_MMAP;
 if(ioctl(g_camfd, VIDIOC_DQBUF, &g_curbuf) == -1)
  return 0;
 return  (unsigned char*)buffers[g_curbuf.index].start; 
}

int return_buf(void)
{
 //重新放入缓存队列
 if(ioctl(g_camfd,VIDIOC_QBUF,&g_curbuf) == -1)
  return -1;
 return 0; 
}

//连续采集以及处理:    
 while(1)
 {
  unsigned char* frame = get_buf();
  //do something...
  return_buf();
 }
因为数据量互传东西也比较多,TF卡拿出来时候还是挺热的.

这几天用过的,觉得不错的资源:

1)http://downloadmirror.intel.com/23171/eng/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z 伽利略的默认系统包,没有p7zip-full感觉很不爽,但是有包管理.

2)http://downloadmirror.intel.com/23171/eng/Board_Support_Package_Sources_for_Intel_Quark_v1.0.0_full_yocto_archive.tar.bz2 无论你是构建什么系统,看了这个绝对不亏的,这可谓是SDK.

3)http://www.tonylabs.com/intel-galileo-connect-sony-playstation-eye-cam.html 国内也有一个搞摄像头的,貌似不知道怎么做.

4)OpenCV文档:http://docs.opencv.org/modules/refman.html


比较菜,大牛们看看就好.


请问你的是什么摄像头,可以直接识别吗? 我用一个普通摄像头,貌似没有驱动,识别不了?
此帖由qomoliao于2014-08-23 13:18:53最后编辑

RE: 学习了几天Linux的感想

caocheng
我是GG
高级会员

最后登陆时间:2014-07-23 11:45:14

4# 发表于 2014-08-27 15:48:56

我的UVC可以识别,用MJPEG-STREAM可以流出来,在浏览器看视频

共4条 1/1 1   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]