⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cvt.c

📁 足球机器人自动程序
💻 C
字号:
#include "cvt.h"static inline unsigned char sat(int c) {	return( (c & ~255)? (c<0)?0:255 : c );}void cvt(const unsigned char * restrict py1, unsigned char * restrict pd1) {	const unsigned char *py2 = py1 + W;	const unsigned char *pu = py1 + Y_SIZE;	const unsigned char *pv = pu + U_SIZE;	unsigned char *pd2 = pd1 + W*4;	int y, u, v;	int b, g, r;	int i, j;	for (i=0; i<H_2; ++i) {		for (j=0; j<W_2; ++j) {			u = *(pu++) - 128;			v = *(pv++) - 128;			b = (454*u) >> 8;			g = (183*v + 88*u) >> 8;			r = (359*v) >> 8;			y = *(py1++);			*(pd1++) = sat(y + b);			*(pd1++) = sat(y - g);			*(pd1++) = sat(y + r);			++pd1;			y = *(py1++);			*(pd1++) = sat(y + b);			*(pd1++) = sat(y - g);			*(pd1++) = sat(y + r);			++pd1;			y = *(py2++);			*(pd2++) = sat(y + b);			*(pd2++) = sat(y - g);			*(pd2++) = sat(y + r);			++pd2;			y = *(py2++);			*(pd2++) = sat(y + b);			*(pd2++) = sat(y - g);			*(pd2++) = sat(y + r);			++pd2;		}		py1 = py2;		py2 += W;		pd1 = pd2;		pd2 += W*4;	}}void cvtm(const unsigned char * restrict py1, unsigned char * restrict pd1, const int * restrict mask, int c) {	const unsigned char *py2 = py1 + W;	const unsigned char *pu = py1 + Y_SIZE;	const unsigned char *pv = pu + U_SIZE;	unsigned char *pd2 = pd1 + W*4;	int y, u, v;	int b, g, r;	int i, j;	for (i=0; i<H_2; ++i) {		for (j=0; j<W_2; ++j) {			if (*mask == c) {				++pu;				++pv;				py1 += 2;				py2 += 2;				*(pd1++) = 0;				*(pd1++) = 255;				*(pd1++) = 0;				++pd1;				*(pd1++) = 0;				*(pd1++) = 255;				*(pd1++) = 0;				++pd1;				*(pd2++) = 0;				*(pd2++) = 255;				*(pd2++) = 0;				++pd2;				*(pd2++) = 0;				*(pd2++) = 255;				*(pd2++) = 0;				++pd2;			}			else if (*mask) {				++pu;				++pv;				py1 += 2;				py2 += 2;				*(pd1++) = 255;				*(pd1++) = 255;				*(pd1++) = 255;				++pd1;				*(pd1++) = 255;				*(pd1++) = 255;				*(pd1++) = 255;				++pd1;				*(pd2++) = 255;				*(pd2++) = 255;				*(pd2++) = 255;				++pd2;				*(pd2++) = 255;				*(pd2++) = 255;				*(pd2++) = 255;				++pd2;			}			else {				u = *(pu++) - 128;				v = *(pv++) - 128;				b = (454*u) >> 8;				g = (183*v + 88*u) >> 8;				r = (359*v) >> 8;				y = *(py1++);				*(pd1++) = sat(y + b);				*(pd1++) = sat(y - g);				*(pd1++) = sat(y + r);				++pd1;				y = *(py1++);				*(pd1++) = sat(y + b);				*(pd1++) = sat(y - g);				*(pd1++) = sat(y + r);				++pd1;				y = *(py2++);				*(pd2++) = sat(y + b);				*(pd2++) = sat(y - g);				*(pd2++) = sat(y + r);				++pd2;				y = *(py2++);				*(pd2++) = sat(y + b);				*(pd2++) = sat(y - g);				*(pd2++) = sat(y + r);				++pd2;			}			++mask;		}		py1 = py2;		py2 += W;		pd1 = pd2;		pd2 += W*4;		++mask;	}}void cvtc(const unsigned char * restrict py1, unsigned char * restrict pd1, const int * restrict mask, const int (* restrict rgb)[3]) {	const unsigned char *py2 = py1 + W;	const unsigned char *pu = py1 + Y_SIZE;	const unsigned char *pv = pu + U_SIZE;	unsigned char *pd2 = pd1 + W*4;	int y, u, v;	int b, g, r;	int i, j;	for (i=0; i<H_2; ++i) {		for (j=0; j<W_2; ++j) {			if (*mask) {				++pu;				++pv;				py1 += 2;				py2 += 2;				b = rgb[*mask][0];				g = rgb[*mask][1];				r = rgb[*mask][2];				*(pd1++) = b;				*(pd1++) = g;				*(pd1++) = r;				++pd1;				*(pd1++) = b;				*(pd1++) = g;				*(pd1++) = r;				++pd1;				*(pd2++) = b;				*(pd2++) = g;				*(pd2++) = r;				++pd2;				*(pd2++) = b;				*(pd2++) = g;				*(pd2++) = r;				++pd2;			}			else {				u = *(pu++) - 128;				v = *(pv++) - 128;				b = (454*u) >> 8;				g = (183*v + 88*u) >> 8;				r = (359*v) >> 8;				y = *(py1++);				*(pd1++) = sat(y + b);				*(pd1++) = sat(y - g);				*(pd1++) = sat(y + r);				++pd1;				y = *(py1++);				*(pd1++) = sat(y + b);				*(pd1++) = sat(y - g);				*(pd1++) = sat(y + r);				++pd1;				y = *(py2++);				*(pd2++) = sat(y + b);				*(pd2++) = sat(y - g);				*(pd2++) = sat(y + r);				++pd2;				y = *(py2++);				*(pd2++) = sat(y + b);				*(pd2++) = sat(y - g);				*(pd2++) = sat(y + r);				++pd2;			}			++mask;		}		py1 = py2;		py2 += W;		pd1 = pd2;		pd2 += W*4;		++mask;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -