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

c 把6*10 的char 数组扩充到8*12, 为图像帧分隔成8*8准备

此程序为扩充的思路:

   1.补新与旧末尾差的字节
    2.复制旧n-1行到新,不够补数
    3.旧最后一行一个一个读到新。

为什么不把旧数据逐个读入新,而是采用以行为单位读,我想这样效率高些。

在编程中发现,因为摄像头如果是输出的yuv信号,每4个yuv字节对应2个像素点。厂家规定的摄像头分辨率的宽度与高度X2必定是8的倍数。所以要补数也是只补yuv文件末尾的空字节。真正要补数的是U,V两个色差信号。假如用的是yuv422, 因为如果是取8*8的yuv信号数据,含有8个Y,4个U,4个V,当对U,V 信号8*8余弦变换时,就必须补4列0。

所以就解释了屏幕分辫率乘以2后,如果不能被8整除,图像必定是斜的,所以要微调宽度。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <string.h>
#include <unistd.h>
#include <linux/fb.h>
#include <stdlib.h>

#include <math.h>
#define PI 3.141593


int main(void){
	char i[]={ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
		      10,11,12,13,14,15,16,17,18,19,
		      20,21,21,23,24,25,26,27,28,29,
		      30,31,32,33,34,35,36,37,38,39,
		      40,41,42,43,44,45,46,47,48,49,
		      50,51,52,53,54,55,56,57
	};
	
	char (*p)[10]=(char (*)[10])i;
	//6*8 扩大到8*12
	//补新与旧末尾的字节
	//复制旧n-1行到新,不够补数
	//旧最后一行一个一个读如新,不够补数
	
	char o[8][12]={};
	char *y=(char *)o;
	//补新与旧末尾的字节
	//复制旧n-1行到新,不够补数
	//旧最后一行一个一个读如新,不够补数
	int J_M=10;         //旧每行的列数
	int X_M=12;         //新每行的列数
	
	memset(&y[57],1,(96-57));          //补新末尾差为1
		
	int h=sizeof(i)/J_M;
	
	for(int a=0;a<h;a++){
		memcpy(&(o[a][0]),&(p[a][0]),J_M);  //行复制就数据到新
	    memset(&(o[a][J_M]),1,X_M-J_M);		//每行不够补1
	}
	
	memcpy(&(o[h][0]),&(p[h][0]),sizeof(i)-h*J_M); //复制旧最后一行到新
	

	for(int a=0;a<8;a++){
		for(int b=0;b<12;b++){
			printf("%d,  ",o[a][b]);
		}
		puts("");
	}
	return 0;
}

 

 

 

 

 

 

 


http://www.kler.cn/news/162910.html

相关文章:

  • uniapp开发小程序经验记录
  • 机器人纯阻抗控制接触刚性环境
  • 如何在Python中使用一行代码编写for循环
  • HarmonyOS应用开发工具DevEco Studio安装与使用
  • 【Vue】修改组件样式并动态添加样式
  • 初学vue3与ts:vue3选项式api获取当前路由地址
  • linux云服务器开启防火墙注意事件
  • 智能优化算法应用:基于食肉植物算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 酿酒生产废水处理的设备需要哪些
  • 《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 Affective Computing 2021
  • 应用架构——集群、分布式、微服务的概念及异同
  • Spark大数据集群日常开发过程遇到的异常及解决思路汇总
  • RepVGG,结构重参数化让VGG风格的ConvNets再次强大起来
  • 人工干预与用户自主选择——算法安全背后的故事
  • Apache APISIX 体验指南
  • 与脾气不太好的领导,相处原则和相处技巧分享
  • Chrome 拓展开发系列:什么是 Chrome 拓展?
  • 常见客户端消息推送服务【Java后端】
  • wangEditor+vue上传图片到阿里云配置
  • 高性能队列框架-Disruptor使用、Netty结合Disruptor大幅提高数据处理性能
  • uniapp 使用 $emit和$on——$on中无法为data中的变量赋值
  • 大华DSS S2-045 OGNL表达式注入漏洞复现
  • 【软件推荐】文本转语音,语音转wav,导入ue5
  • P1046 [NOIP2005 普及组] 陶陶摘苹果题解
  • Django 用户验证与权限管理
  • 【【FPGA 之 MicroBlaze定时器中断实验】】
  • 基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计
  • SpringBoot 项目将jar 部署在服务器引用外部 配置文件
  • 服务器数据恢复—ocfs2文件系统被格式化为其他文件系统如何恢复数据?
  • ElasticSearch之Delete index API