video scaler程序中出现的问题及解决方法

1.关于四字节对齐的问题

出现现象:如果不是4的倍数,图像呈黑白色倾斜,然后有斜纹出现。

解决方法:对其做处理,不是4的倍数的时候,添0补齐。

结果:彩色图片出来了,但是一条斜黑线仍然存在。

接着的解决方法:分配宽为4的倍数的内存wid_size1=(wid_size*BmpBit/8+3)/4*4;

pBmpBuffer=(unsigned char*)malloc(sizeof(unsigned char)*(wid_size1*height));

分配内存时自动给buffer初始化赋0,接着开始写buffer就行,但每行要跳过4的倍数的字节.

例如:for(j=0;j<wid_size;j++)
  {
   *(pBmpBuffer+i*wid_size1+j*3)=(unsigned char)(filter(*(filtern+chose[j]),(new_buffer_b+r_integal[j]),tap));
   *(pBmpBuffer+i*wid_size1+j*3+1)=(unsigned char)(filter(*(filtern+chose[j]),(new_buffer_g+r_integal[j]),tap));
   *(pBmpBuffer+i*wid_size1+j*3+2)=(unsigned char)(filter(*(filtern+chose[j]),(new_buffer_r+r_integal[j]),tap));     
  }

结果:perfect呵呵

2.关于调试过程中出现的乱码问题原因:传递的参数不对char型被转化为int型,造成取数据的时候出现错误。

3.出现现象:图像颜色过渡比较大的时候出现和图像色调不匹配的颜色块

  出现原因:数据经过filter以后因为返回值是int类型,对其进行强制转换unsigned char,没有考虑到滤波结果是负数或者大于255的现象。图像色彩取值为0~255

  解决方法:对齐进行判定,如果返回值小于0就使其为0;大于255,让其取255.

  结果:成功。

 

你可能感兴趣的:(video,filter,buffer)