title: Insert OpenCv Mat to C++ std::vector
body: <p>I am pushing Mat objects into a std::vector.</p>
  
  <p>But, when I try to access the elements (Mat) after that, it did not give me the images pushed in earlier, depending on frameOrientation.</p>
  
  <p>E.g., in the case below,i get "after_push_rotated2.jpg" same as "before_push_rotated3.jpg", which should not be. </p>
  
  <p>If I set frameOrientation to all "2s" or "4s", "after_push_rotated1/2/3.jpg" all are identical and equals "before_push_rotated3.jpg".</p>
  
  <p>What is wrong here?</p>
  
  <pre><code>#include &lt;cv.h&gt;
  #include &lt;cxcore.h&gt;
  #include &lt;highgui.h&gt;
  #include &lt;iostream&gt;
  #include &lt;vector&gt;
  
  using namespace cv;
  using namespace std;
  
  vector&lt;Mat&gt; checkOrientationAndRotate()
  {
      Mat frame1 = imread("1.jpg" );
      Mat frame2 = imread("2.jpg" );
      Mat frame3 = imread("3.jpg" );
  
  
  
      vector&lt;Mat&gt; frameList;
      vector&lt;Mat&gt; frameList_rotated;
  
      frameList.push_back(frame1);
      frameList.push_back(frame2);
      frameList.push_back(frame3);
  
      Mat transposedFrame;
      Mat rotatedFrame;
  
      int i=0;
      for (vector&lt;Mat&gt;::iterator iter = frameList.begin(); iter != frameList.end(); iter++)
      {
          //Check for orientation of that frame
          int frameOrientation;
          if (i==0) frameOrientation = 1;
          if (i==1) frameOrientation = 2;
          if (i==2) frameOrientation = 4;
  
          switch (frameOrientation)
          {
          case 1: //1 - no rotate
              rotatedFrame = *iter;
              break;
  
          case 2: //2 - rotate it ACW 90 deg
              transpose(*iter, transposedFrame);
              flip(transposedFrame, rotatedFrame, 0);
              break;
  
          case 3: //3 - rotate it 180deg
              flip(*iter, rotatedFrame, -1);
              break;
  
          case 4: //4 - rotate it CW 90 deg
              transpose(*iter, transposedFrame);
              flip(transposedFrame, rotatedFrame, 1);
              break;
          default:
              break;
          }
  
          //Check frame before pushing into vector
          if (i==0) imwrite("before_push_rotated1.jpg",rotatedFrame);
          if (i==1) imwrite("before_push_rotated2.jpg",rotatedFrame);
          if (i==2) imwrite("before_push_rotated3.jpg",rotatedFrame);
  
          frameList_rotated.push_back(rotatedFrame);
  
  
          //Check frame after pushing into vector.
          //Depending on the frameorientation, the frames are not the frames pushed in earlier!
          int n=0;
          for (vector&lt;Mat&gt;::iterator iter = frameList_rotated.begin(); iter != frameList_rotated.end(); iter++)
          {
              Mat frame = *iter;
              if (n==0) imwrite("after_push_rotated1.jpg",frame);
              if (n==1) imwrite("after_push_rotated2.jpg",frame);
              if (n==2) imwrite("after_push_rotated3.jpg",frame);
              n++;
          }
  
          i++;
          } //for
  
          return frameList_rotated;
  
  }
  
  void main()
  {
      vector&lt;Mat&gt; frameList_rotated = checkOrientationAndRotate();
  }
  </code></pre>