2016-06-30 5 views
-4

"ImgCoordinatesList" & "ImgCoordinatesListCopy"という2つのベクトルがあります。ベクトルを別のベクトルにコピーするときにエラーが発生する

最初のベクトルは、連続的にプッシュバックされた値を受信する(X、Y、タイプ - Iは、以前のint、int型、文字列を有する構造体を定義して、そのオブジェクトがlist_objある)。関数「ImgCreation」一旦

最初のベクトルの内容を "ImgCoordinatesListCopy"ベクトルにコピーし、このコピーベクトル内の内容を次の処理に使用する必要があります。

しかし、私はエラーを作り出しました。

void SliceImageNew::BuildImgCoordinatesList(const long X, const long Y, string Type) 
{ 
    //Creates the Structure for one x,y,type coordinate 
    list_obj.x = X; 
    list_obj.y = Y; 
    list_obj.Coordinates_Type = Type; 

    //Pushes the structure into a vector which eventually forms a vector of structs 
    ImgCoordinatesList.push_back(list_obj); 
} 

void SliceImageNew::ImgCreation() 
{ 
    ImgCoordinatesListCopy.resize(ImgCoordinatesList.size()); 
    copy(ImgCoordinatesList.begin(), ImgCoordinatesList.end(), ImgCoordinatesListCopy.begin()); 
    //ImgCoordinatesListCopy = ImgCoordinatesList; //Copy the contents into another vector and create image with the copy vector 

    ImgCoordinatesList.erase(ImgCoordinatesList.begin(), ImgCoordinatesList.end());//Clear the vector after copying the contents into another vector 
    PlotImgCoordinates(); 
    //SaveSliceImg(); 
    //ClearImgCoordinatesList(); 

} 

void SliceImageNew::PlotImgCoordinates() 
{ 
    static int SliceImgCount = 1; 
    Mat SliceImg(Size(1920, 1080), CV_16UC3); // Blank Image with White Background and 1920*1080 Dimensions 
    for (int i = 1; i!=ImgCoordinatesListCopy.size(); i++) 
    { 
     //Color differentiation between Mark and Jump Lines 
     if (ImgCoordinatesListCopy[i].Coordinates_Type == "Mark") 
     { 
      //cout << "This is a mark line" << endl; 
      line(SliceImg, Point(ImgCoordinatesListCopy[i - 1].x, ImgCoordinatesListCopy[i - 1].y), Point(ImgCoordinatesListCopy[i].x, ImgCoordinatesListCopy[i].y), Scalar(255, 255, 155), 4, 2, 0); 
     } 
     else 
     { 
      //cout << "This is a jump line" << endl; 
      line(SliceImg, Point(ImgCoordinatesListCopy[i - 1].x, ImgCoordinatesListCopy[i - 1].y), Point(ImgCoordinatesListCopy[i].x, ImgCoordinatesListCopy[i].y), Scalar(255, 100, 155), 4, 2, 0); 
     } 


    } 
//Creating Legends for the Plot 
    putText(SliceImg, "Mark Line", cvPoint(1600, 40), 
     FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2); 
    line(SliceImg, Point(1540, 35), Point(1590, 35), Scalar(255, 255, 155), 4, 2, 0); 

    putText(SliceImg, "Jump Line", cvPoint(1600, 80), 
     FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2); 
    line(SliceImg, Point(1540, 75), Point(1590, 75), Scalar(255, 100, 155), 4, 2, 0); 

    //Providing unique names for every picture that is being saved 
    name << "Slice" << SliceImgCount << ".jpg"; 

    // Saving the image 
    imwrite(name.str(), SliceImg); 
    SliceImgCount++; //Increment the count to provide unique names to the images 
    waitKey(0); 
} 

Iコードを示す画像を添付しており、デバッグ中にエラーがimage

を生成し、画像中の強調表示された行は、そのエラーを生成!

誰かが私を助けることができますか?

+5

コードを画像として投稿しないでください。コードをテキストとして投稿します。 –

+2

ベクトルサイズは「0」にすることができます。 – LogicStuff

+2

'!='から '<' – marcinj

答えて

0

解決策を見つけました!

私は "SliceImageNew"クラスのオブジェクト宣言を使いこなしました。補正後は正常に動作し、画像を完全に描画します。

関連する問題