当前位置: 首页 > news >正文

网站建设素材收集通知推广计划和推广单元有什么区别

网站建设素材收集通知,推广计划和推广单元有什么区别,如何建个使用自己帐户的网站,义乌网红村因为采用yuv格式#xff0c;帧率都很低。图像会拖影。把图像尺寸尽量缩小#xff0c;能大大改善。现在最麻烦的是图像上有黑色的闪影#xff0c;不知是为啥#xff1f;如是framebuffer引起的就无解了。终于找到问题了#xff0c;是在显示前加了一条用黑色清屏造成的#…因为采用yuv格式帧率都很低。图像会拖影。把图像尺寸尽量缩小能大大改善。现在最麻烦的是图像上有黑色的闪影不知是为啥如是framebuffer引起的就无解了。终于找到问题了是在显示前加了一条用黑色清屏造成的删除此句图像马上干净完美了。 对比茄子软件拍的视频肉眼可见的超越。 还有每个摄像头的录像尺寸是固定的不能乱设否则不能显示图像可以用前面写的查看v4l2摄像头软件查一下参数。 在这个基础上再加上把数据写入文件就具有录像功能了。但因为数据太大。不能长时间录像意义不大。准备学一下mjpg格式再写。 此方法.可以编写视频回放慢放功能软件可惜yuv格式拍摄的视频帧率都不高一般都不会超过10帧/秒。 正准备采用多进程管道内存共享等方式来提高帧率原理就是减少拍摄采样循环中非采样占用的时间。如显示如yuv转换一句话就是采样循环中尽量少塞入其他功能代码。 现在采用framebuffer 来显示视频不是通用方法最完美是在gui图形界面中显示但gui显示方法涉及到QT编程太复杂。 还有在显示环节填充黑色字节可以把视频图像移动到整个屏幕中任何地方。我在想华为鸿蒙的开机动画是不是也是采用的这个显示方法。 #include stdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #include stdlib.h #include unistd.h #include sys/ioctl.h #include linux/videodev2.h //v4l2 头文件 #include string.h #include sys/mman.h #include linux/fb.h#define pic_width 640 //1280*720 640*360 960*540 320*240 424*240 848*480 640*480 #define pic_heigth 480#define WT 0 //如果图片是斜的微调此值static int color10; static int color20; static int sp[3000*2000]; //摄像头图片最大尺寸 static struct fb_var_screeninfo var;#define HCQ 10 //v4l2 缓冲区个数int main(void) {int fd open(/dev/video0, O_RDWR);if (fd 0) {perror(打开设备失败);return -1;}struct v4l2_format vfmt;vfmt.type 1;vfmt.fmt.pix.width pic_width;vfmt.fmt.pix.height pic_heigth;vfmt.fmt.pix.pixelformatv4l2_fourcc(Y,U,Y,V);int ret ioctl(fd, VIDIOC_S_FMT, vfmt);if (ret 0) {perror(设置格式失败);}struct v4l2_requestbuffers reqbuffer;reqbuffer.type V4L2_BUF_TYPE_VIDEO_CAPTURE;reqbuffer.count HCQ;reqbuffer.memory V4L2_MEMORY_MMAP ;ret ioctl(fd, VIDIOC_REQBUFS, reqbuffer);if (ret 0) {perror(申请队列空间失败);}//我理解以下部分struct v4l2_buffer mapbuffer; //相当于在为mapbuffer 设置读写规则还没有开始数据传输怎样摄像头buf传输数据保存在多少个mmap中mapbuffer.type V4L2_BUF_TYPE_VIDEO_CAPTURE;unsigned char *mptr[HCQ];for (int t 0; t HCQ; t) {mapbuffer.index t;ret ioctl(fd, VIDIOC_QUERYBUF, mapbuffer);//读摄像头缓冲区数据为映射mmap准备if(ret 0){perror(查询内核空间队列失败);}mptr[t] mmap(NULL, mapbuffer.length, PROT_READ | PROT_WRITE, MAP_SHARED, fd, mapbuffer.m.offset); //摄像头缓冲区映射到内存// size[t] mapbuffer.length;ret ioctl(fd, VIDIOC_QBUF, mapbuffer); //释放一个buf缓冲区空间摄像头可以为此buf写入数据if (ret 0) {perror(放回失败);}} //--------------------------我的理解以上都是设置--------------------------------------------- //int type V4L2_BUF_TYPE_VIDEO_CAPTURE;ret ioctl(fd, VIDIOC_STREAMON, type); //启动流数据开始传输if (ret 0) {perror(开启失败);}struct v4l2_buffer readbuffer;readbuffer.type V4L2_BUF_TYPE_VIDEO_CAPTURE; //安装mapbuffer设置的规矩来读数据从mmap中提取 //---------------------------------------------------------------------------while(1){ret ioctl(fd, VIDIOC_DQBUF, readbuffer); //读当前队列缓冲区的数据 index循环1,VIDIOC_DQBUF执行一次index加1if (ret 0) {perror(提取数据失败);}int ireadbuffer.index;int len readbuffer.length;char (*p)[4](char (*)[4])mptr[i]; // p[][0]Y p[][1]U p[][2]Y p[][3]V//R Y 1.4075 *V-128//G Y – 0.3455 *U –128 – 0.7169 *V –128// B Y 1.779 *U – 128)int t0;int u0;while(1){if(4*tlen){break;}int Y1(unsigned char)p[t][0];if((4*t1)len){break;}int U(unsigned char)p[t][1];if((4*t2)len){break;}int Y2(unsigned char)p[t][2];if((4*t3)len){break;}int V(unsigned char)p[t][3];//-------------------------------------------------int B0Y11.779*(U-128);if(B0255) B0255;if(B00) B00;int G0Y1-0.3455*(U-128)-0.7169*(V-128);if(G0255) G0255;if(G00) G00;int R0Y11.4075*(V-128);if(R0255) R0255;if(R00) R00;int B1Y21.779*(U-128);if(B1255) B1255;if(B10) B10;int G1Y2-0.3455*(U-128)-0.7169*(V-128);if(G1255) G1255;if(G10) G10;int R1Y21.4075*(V-128);if(R1255) R1255;if(R10) R10;color1(R016)|(G08)|B0;color2(R116)|(G18)|B1;sp[u]color1;sp[u1]color2;t;uu2;}//--------------------------------int fd_fb open(/dev/fb0, O_RDWR);if (fd_fb 0){puts(/dev/fb0 error);return -1;}if (ioctl(fd_fb, FBIOGET_VSCREENINFO, var)){puts(ioctl error);return -1;}// unsigned int pixel_width var.bits_per_pixel / 8; //deepin32int screen_size var.xres * var.yres * var.bits_per_pixel / 8; //刚好等于图片的长乘宽unsigned char *fb_base mmap(NULL, screen_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd_fb, 0);if (fb_base NULL){puts(mmap error);return -1;} // memset(fb_base,0, screen_size); //设底色为黑色 必须删除这句否则要造成黑带屏闪int zz0;var.xresvar.xresWT; //如果图片是斜的微调WT的值for(int a0;avar.yres;a){for(int b0;bvar.xres;b){unsigned int (*p)[var.xres](unsigned int (*)[var.xres])fb_base; //此处不能用图片的尺寸因为有不同尺大小if(bpic_width){ //如果图片宽度小于framebuffer 的宽度小与部分填充0黑色p[a][b]sp[zz]; //sp[zz]zz;}else{p[a][b]0; //填充黑色}}}ret ioctl(fd, VIDIOC_QBUF, readbuffer); //把缓冲区数据放入读队列中if (ret 0) {perror(放回失败);}munmap(fb_base, screen_size);close(fd_fb);}puts(over);return 0; }
http://www.dnsts.com.cn/news/88107.html

相关文章:

  • 网站脚本错误黄页88网官网登录
  • 合肥大型网站制作公司开网站 怎么做网上支付
  • 京东网站建设框架图学物联网工程后悔死了
  • 做网站用什么软件最简单企业网站推广效果从哪些方面进行分析
  • 做损坏文档的网站青岛市房产信息网官网
  • 微网站 域名网站建设合作加盟
  • 做全英文网站元气森林网络营销案例
  • 西宁网站建设报价ew君博贴心品牌宣传网站制作
  • 高端网站设计公司上海建设工程新工艺网站
  • js网站模板湖南seo排名
  • 做网站干什么用wordpress 4.9.6 漏洞
  • 做读书网站的前景企业微信登录网页版
  • 富顺做网站wordpress 改变字体
  • 网站的设计要素wordpress 定时发送
  • 做会所在哪个网站推广公司网站首页的图片怎么做
  • 做网站必须要虚拟主机吗清新网站模板
  • wap电影网站建设成都网站设计建设
  • 做公司的网站有哪些东西吗宁夏做网站的公司
  • 男生和女生做污的事情免费网站邯郸市第一医院
  • 家政网站制作南京做企业网站公司哪家好
  • 广东佛山建网站柳州企业网站建设公司
  • 做网站自己买服务器吗湖州长兴建设局网站
  • 网站建设平台一般多少钱枣庄网站开发公司
  • 湛江专业建站推荐网销工作内容简述
  • 私人网站制作劳务 东莞网站建设
  • 外贸网站建站那家公司好wordpress用户中心模板
  • 成都定制网站建设服网站建设的一般流程是
  • 温州编程网站济南房产网新开楼盘
  • 哪个公司网站做的最好销售管理软件哪个好用
  • 内江网站开发长沙注册公司核名网站