当前位置: 首页 > 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/a/162910.html

相关文章:

  • 代码随想录第二十一天| 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树
  • 【R78/G15 开发板测评】串口打印 DHT11 温湿度传感器、DS18B20 温度传感器数据,LabVIEW 上位机绘制演化曲线
  • 基于标签相关性的多标签学习
  • 结构体(c语言)
  • 智能电视/盒子的应用管理——通过ADB工具优化体验
  • 时序数据库TimescaleDB安装部署以及常见使用
  • 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大幅提高数据处理性能