C语言改变背景颜色,opencv替换背景颜色Python
原理:底片图像处理算法是从255中减去原图像的r、g、b分量值。
1 .添加头文件,定义相关宏和结构
#包含
#包含
#包含
#包含
# definejpegsderrorjpeg _ STD _ error
# definejpegcreatedecompression JPEG _ create _ decompress
# definejpegcreatecompress JPEG _ create _ compress
# definejpegstdiosrcjpeg _ stdio _ src
# definejpegreadheader JPEG _ read _ header
#definejpegstart解压缩jpeg _ start _解压缩
#定义扫描线输出_扫描线
#定义下一行下一条_扫描线
# definejpegreadline JPEG _ read _ scan行
# definejpegfinishdecompression JPEG _ finish _ decompress
# definejpegdestroydecompress JPEG _ destroy _ decompress
# definejpegsdiodestjpg _ stdio _ dest
# definejpegsetdefaultjpeg _ set _ defaults
# definejpegsetquality JPEG _ set _ quality
# definejpegstartcompressjpeg _ start _ compress
# definejpegwritelinejpge _ write _ scan行
# definejpegfinishcompress JPEG _ finish _ compress
# definejpegdestroycompress JPEG _ destroy _ compress
类型def jsam parray JPEG数组;
类型文件*文件光电带读数机(photoelectric tape reader)
typedefstructjpeg _ compress _ structdldxss;
typedefstructjpeg _ decompress _ struct呆萌水杯;
typedefstructjpeg _ error _ mgrjpegerrmgr;
数据类型说明结构图像高贵万宝路图像高贵万宝路;
结构YY dws/p {
无符号char fname[256];
输入宽度;
(同Internationalorganizations)国际组织高度;
int位深度
(同国际组织)国际组织标志;
无符号char * rgba
(;
2 .实现图像反转函数
{
int Pos=0;
int i,j;
if(flag==0)。
for(I=0;ih身高;我)
{
for(j=0;jWidthj)
{
图像数据-rgba[4 * pos 0]=255-图像数据-rgba[4 * pos 0];
图像数据-rgba[4 *位置1]=255-图像数据-rgba[4 * pos 1];
图像数据-rgba[4 *位置2]=255-图像数据-rgba[4 *位置2];
销售点;
}
}
ELSEif(flag==1))。
for(I=0;ih身高;我)
{
for(j=0;jWidthj)
{
图像数据-rgba [4* pos0]=255 ^图像数据-rgba[4 * pos 0];
图像数据-rgba [4* pos1]=255 ^图像数据-rgba[4 * pos 1];
图像数据-rgba [4* pos2]=255 ^图像数据-rgba[4 *位置2];
销售点;
}
}
ELSEif(flag==2))。
for(I=0;ih身高;我)
{
for(j=0;jWidthj)
{
图像数据-rgba[4 * pos 0]=~图像数据-rgba[4 * pos 0];
图像数据-rgba[4 * pos 1]=~图像数据-rgba[4 * pos 1];
图像数据-rgba[4 * pos 2]=~图像数据-rgba[4 *位置2];
销售点;
}
}
返回0;
}
3 .读写图片
见《C语言实现色彩平衡算法》
4 .添加主函数
intmain(intargc,char无限密钥argv))))))))))。
{
char rgba数据[ 16 * 300 * 300 ];
char hxsdl[256]
茶健忘河马[256]
(同国际组织)国际组织标志;
记忆集(高贵的万宝路,0x00,sizeof)高贵的万宝路);0x00,sizeof(hx SDL);0x00、sizeof(健忘的河马);
如果(argc!=4)
{
printf(输入参数错误!\ n ;
}
strncpy(hxsdl,argv[1],255);
strncpy(健忘的河马,argv[2],255);
flag=atoi(argv[3];
高贵的万宝路RGBA=RGBAData;
strcpy(高贵的万宝路. FName,hxsdl);
高贵的万宝路;
反转图像颜色(高贵的万宝路,旗帜);
strcpy(高贵的万宝路. FName,健忘的河马);
高贵的万宝路;
返回0;
}
5 .编译运行
$ gcc-oexamleexamle。c-l $本国/当地/先前/Li B-LJ挂钩
$ ./例如a.jpg b.jpg 0
6 .运行结果
10.jpg
986cc95T.jpg
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。