Initialisieren Vektor zu null
Zunächst den Vektor "perm" ist null. Ich möchten, setzen Sie ihn auf null, basierend auf dem index der Schleife. Aber ich habe Fehler "vector subscript out of range", während Sie den code unten.
Legte ich "perm(charLength, 0)" in der "Start ()" - Methode außerhalb der Schleife, so dass es nicht zurückgesetzt werden, es ist verwendet für das anhäufen von Werten.
DecodeEngine.h
class DecodeEngine
{
public:
vector<int> temp;
vector<int> perm;
//Default constructor
DecodeEngine();
//Declare a virtual destructor:
virtual ~DecodeEngine();
//Methods
string GetFilePath();
Mat Start();
void FrameTo8by8();
};
DecodeEngine.cpp
Mat DecodeEngine::Start()
{
charLength = 160;
//Initialize perm to zero
perm(charLength, 0);
//Loop 1st 100 frame of header
while(true)
{
if(frame_count <= 100)
{
FrameTo8by8(); //Proccess and algorithm
namedWindow("dctBlockImage");
imshow("dctBlockImage", dctImage); //display watermarked image
if(waitKey(30) == 27) //wait for 'esc' key press for 30 ms. If 'esc' key is pressed, break loop
{
cout << "esc key is pressed by user" << endl;
break;
}
frame_count++;
}
else
{
cout << endl;
cout << "End of video" << endl;
cout << endl;
destroyWindow("Original Video");
destroyWindow("dctBlockImage");
break;
}
}
void DecodeEngine::FrameTo8by8()
{
for(int i = 0; i < height-16; i += 16)
{
for(int j = 0 ; j < width-16; j += 16)
{
if(j > 112)
{
if(((sum4 / 4) - avg) > 0)
{
value = 0;
temp.push_back(value);
}
else
{
value = 1;
temp.push_back(value);
}
}
if(temp.size() == charLength)
{
for(int a = 0; a <= temp.size(); a ++)
{
//Initialize perm to zero
perm[a] = 0;
if(temp[a] == 1)
{
perm[a]++;
}
//Reset temp for next frame to use
temp[a] = 0;
}
}
}
}
}
- Hast du nicht gesagt, über
for(int a = 0; a <= temp.size(); a ++)
Sie das Letzte mal angesprochen? - einige meiner codes sind, fehlt von der früheren post, diese ist die neue Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Zeile:
Nicht, rufen Sie den Konstruktor
std::vector(size_t, const T&)
und initialisiert den Vektor mit 160 Elemente der Wert10
. In der Tat, ich sehe nicht, wie, kompiliert, da die vector-Klasse nicht mit einemoperator()
.std::vector
enthält eine member-Funktionassign()
dass Sie stattdessen:In das folgende Stück code, den Sie gehen, aus der Reihe: