Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中使用极坐标法向帧添加噪波_C_Video_Encoding_Frame_Yuv - Fatal编程技术网

在C中使用极坐标法向帧添加噪波

在C中使用极坐标法向帧添加噪波,c,video,encoding,frame,yuv,C,Video,Encoding,Frame,Yuv,我写了一个程序,可以读取原始YUV文件,并将平均值为0的高斯噪声添加到修改后的文件中。 问题是我不知道如何在主函数上实现极性函数,当我尝试它时,它总是产生错误。 任何人都有办法解决我的问题。 谢谢 极性函数期望两个双精度地址作为输入。如果声明将a1和a2传递到polar,则可以调用polar&a1和&a2。极坐标函数返回时将设置a1和a2。要检查这一点,在调用polar函数之前和之后,请尝试打印这些变量。您的代码中没有任何地方调用polar。当前,您将OOTBALL_352x288_30_ori

我写了一个程序,可以读取原始YUV文件,并将平均值为0的高斯噪声添加到修改后的文件中。
问题是我不知道如何在主函数上实现极性函数,当我尝试它时,它总是产生错误。 任何人都有办法解决我的问题。 谢谢


极性函数期望两个双精度地址作为输入。如果声明将a1和a2传递到polar,则可以调用polar&a1和&a2。极坐标函数返回时将设置a1和a2。要检查这一点,在调用polar函数之前和之后,请尝试打印这些变量。

您的代码中没有任何地方调用polar。当前,您将OOTBALL_352x288_30_orig_01.yuv复制到FOOTBALL_352x288_30_orig_02.yuv,假设输入文件包含int的二进制表示形式。我建议您不要使用feof,而是检查freadthe的结果问题是,我不知道在哪里以及如何调用极坐标代码。问题是我们无法知道您想要做什么以及文件包含什么。请注意,您从二进制和极坐标中读取int,我尝试的是从YUV视频序列中读取帧,并将噪声添加到平均值为0的帧高斯噪声中。使用足球中的YUV序列\u 352x288\u 30\u orig\u 01\u YUV 352x288像素,30Hz帧速率,4:2:0问题不在这里^^问题是我不知道如何在主函数上实现极函数。这个答案描述了如何从主函数调用极函数。你不明白,OP不知道如何读取YUV文件,你说给浮点地址,你不能说这些浮点数是从哪里来的,这些变量是从哪里来的,只要它们被正确地分配了,它们是从哪里来的,因为它们位于main的框架上。极性函数不使用或关心双精度的初始值。它将覆盖这些值。
void polar(double *x1, double *x2)
{
   double u, v, q, p;

   do {
      u = 2.0 * random() - 1;
      v = 2.0 * random() - 1;
      q  = u * u + v * v;
   } while (q >= 1.0 || q == 0.0);

   p = sqrt(-2 * log(q) / q);
   *x1 = u * p;
   *x2 = v * p;
}

int main(void) 
{
    FILE *fp1, *fp2;
    int a;
    double a1,a2;
    fp1= fopen("FOOTBALL_352x288_30_orig_01.yuv","rb");
    fp2= fopen("FOOTBALL_352x288_30_orig_02.yuv","wb");


    int tab[10]="";

    while(!feof(fp1))
    {
        fread(tab,sizeof(int),1,fp1);
        fwrite(tab,sizeof(int),1,fp2);
    }      

    fclose(fp1);
    fclose(fp2);

    return 0;
}