使用systemC比较图像

问题描述:

我在这个论坛上写了一些问题,希望能帮助我解决这个问题,这个问题花了我很多时间,我用systemC编写我的第一个程序,我将尽我所能扩展我的目标,我存储了2个我写了一个systemC代码,加载两个矩阵并应用绝对差分的somme,如果代码显示消息(运动)的阈值不同优越的数目。使用systemC比较图像

我的代码由两个模块组成,第一个模块检查是否有一个数字存储在一个文本文件中,如果是的话,这个模块会自动让其他模块加载两个矩阵并进行比较,我真的需要这段代码项目毕业的任何帮助或建议。

#include "systemC.h" 
#include "string.h" 
#include "stdio.h" 
#include"stdlib.h" 
#include <time.h> 
#include <math.h>  /* fabs */ 
#include <fstream> 
#include <iostream> 
    #include <fstream> 
using namespace std; 
#define _CRT_SECURE_NO_WARNINGS 
_CRT_SECURE_NO_WARNINGS 
double elapsed; 

int H = 0; 
int D = 0; 
int a, b; 
int in = false; 
int L = 0; 
char *mode1 = "r"; 
char *mode2 = "w"; 
    int i, j, k; 
int rows1, cols1, rows2, cols2; 
bool fileFound = false; 
FILE *SwitchContext; 
FILE *image1; 
FILE *image2; 
FILE *image3; 
int sum = 0; 
clock_t start = clock(); 
    SC_MODULE(synchronization) 
{ 
sc_in<bool>sig ; 
SC_CTOR(synchronization) 
{ 
    SC_METHOD(synchroprocess) 

} 
void synchroprocess() 
{ 
    cout << "\n Running Automation"; 
    SwitchContext = fopen("F:/SWITCH CONTEXT.txt", mode2); 
    fscanf(SwitchContext, "%d", &L); 

    while (L != 0) 

    { 
     cout << "waiting..."; 
    } 
    sig == true; 
} 

    }; 



    SC_MODULE(imageProcess) 
    { 
     sc_in<bool>sig; 
      SC_CTOR(imageProcess) 
     { 
       SC_METHOD(MotionDetector) 
        sensitive(sig); 
     } 
     void MotionDetector() 
     { 


        image3 = fopen("F:/image3.txt", mode2); 
       do 
       { 
        char *mode1 = "r"; 
        char *mode2 = "w"; 
        image1 = fopen("F:/image1.txt", mode1); 

          if (!image1) 
          { 
         printf("File Not Found!!\n"); 
         fileFound = true; 
          } 
         else 
         fileFound = false; 
          } 
         while (fileFound); 
          do 
          { 
        image2 = fopen("F:/image2.txt", mode1); 
        if (!image2) 
          { 
         printf("File Not Found!!\n"); 
         fileFound = true; 
          } 
         else 
         fileFound = false; 
         } 
         while (fileFound); 
       rows1 = rows2 = 384; 
       cols1 = cols2 = 512; 

       int **mat1 = (int **)malloc(rows1 * sizeof(int*)); 
       for (i = 0; i < rows1; i++) 
       mat1[i] = (int *)malloc(cols1 * sizeof(int)); 

       i = 0; 

       int **mat2 = (int **)malloc(rows2 * sizeof(int*)); 
       for (i = 0; i < rows2; i++) 
        mat2[i] = (int *)malloc(cols2 * sizeof(int)); 

          i = 0; 

       while (!feof(image1)) 
       { 
        for (i = 0; i < rows1; i++) 
        { 
         for (j = 0; j < cols1; j++) 
          fscanf(image1, "%d%", &mat1[i][j]); 
        } 
       } 

       i = 0; 
       j = 0; 

       while (!feof(image2)) 
       { 
        for (i = 0; i < rows2; i++) 
        { 
         for (j = 0; j < cols2; j++) 
          fscanf(image2, "%d%", &mat2[i][j]); 
        } 
       } 

       i = 0; 
       j = 0; 

        printf("\n\n"); 
        for (i = 0; i < rows1; i++) 
       { 
        for (j = 0; j < cols1; j++) { 
         a = abs(mat1[i][j] = mat2[i][j]); 
          b = b + a; 
       } 
       } 

       i = j = 0; 
       D = b/196608; 

       if (D > 0.9) 
       { 
        printf("%d,&K"); 
        printf("MOTION...DETECTED"); 
        getchar(); 
        sc_pause; 
        for (i = 0; i < rows1; i++) { 
         for (j = 0; j < cols1; j++) 
         { 
          fprintf(image3, "%d ", mat2[i][j]); 
         } 

         fprintf(image3, "\n"); 
        } 
        printf("\n Image Saved...."); 
        std::ofstream mon_fichier("F:\toto.txt"); 
        mon_fichier << elapsed << '\n'; 
        } 

        fclose(image1); 
        fclose(image2); 
        fclose(image3); 
        clock_t end = clock(); 
        elapsed = ((double)end - start)/CLOCKS_PER_SEC; 
        printf("time is %f", elapsed); 

        } 
       }; 

    int sc_main(int argc, char* argv[]) 
    { 
      imageProcess master("EE2"); 
      master.MotionDetector(); 

     sc_start(); 
     return(0); 
    } 

你所做的基本上是错误的。

  • 你复制粘贴代码SC_MODULE,这个代码是简单的C代码

  • (不要混淆C/C++文件)

  • 这不是你如何使用时钟

你应该做什么:

  • 你需要检查你的alg。作品,对于这个你不需要的SystemC在所有

  • 然后你就可以用硬件更换的数据类型,并检查它是否仍然有效

  • 然后你必须找到它的数据接口,在硬件以及如何使用使用这个接口

  • 然后你必须调整你的alg。与此接口的工作(在那里你可以使用SC_MODULE,SC端口等等)

还拿看SC_CTHREAD,你会需要它。

没有关于目标平台的任何信息,我无法提供任何其他帮助。