Jump to content

Problem to copy a matrix within other one


marco711

Recommended Posts

Hello,

I'm coding an SC_THREAD where I receive a flux of pixels which is saved within a buffer called image_buffer. This buffer is of size 3 lines x 720 columns. What I'm trying to do is that when the buffer is filled with two lines and the first 4 columns of the third line, it starts to copy the content of the buffer within another matrix called img. Below is the code:

void FILTER::filtering(){

  if(!reset_n){
    p_out.write(0);
    h_out.write(false);
    v_out.write(false);
    cout << "module: " << name() << "... reset!" << endl;
  }

  while(1){
    while(!h_in) wait(h_in.posedge_event()); 
    for(i=0; i<3; i++){
      for(j=0; j<720; j++){
        image_buffer.pixel[i*image_buffer.width+j] = p_in;
        wait();
        while(!h_in) wait();

        //Here I put the condition to start saving the pixels from the buffer into another matrix
        if ( (i > 1) && (j > 4) ){
          for(int bi=0; bi<576; bi++){
            for(int bj=0; bj<720; bj++){
              if (bi < 3){
                img.pixel[bi*img.width+bj] = image_buffer.pixel[bi*image_buffer.width+bj];
                
                //Here is checked that there is not difference between the two matrix
                unsigned char diff = img.pixel[bi*img.width+bj] - image_buffer.pixel[bi*image_buffer.width+bj];
                if (int(diff) != 0){ cout << "ERROR" << endl; exit(1);}
              }
              else{
                img.pixel[bi*img.width+bj] = image_buffer.pixel[(bi%3)*image_buffer.width+bj];
              }

              //Here I check that i and j are stuck in 2 and 5
              cout << "i: " << i << " j: " << j << endl;
 
//The image is savec in a png file when the the matrix is full

if ( (bi == 575)&&(bj == 719) ){ image_write( &img, "test.png" ); exit(1); } } } } wait(); } } } }

 

 

The problem I have is that when I check in the terminal how the counters i and j change, I see that they are stuck with values i = 2 and j = 5. When I check the image saved in the matrix img I see just a thin part of the image in the top (it should be the pixels of the first two lines and the first four pixels of the third line) and then the rest if full of any other thing. The problem should be related to the condition I put to start saving the pixels in the buffer into the other matrix ( if ( (i > 1) && (j > 4) ) ) but I can't figure out any other way to put this condition. Could you please give me a hint on how to solve this or what am I doing wrong?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...