SEHException when I want to merge channels in OpenCV [closed]
This is code:
int l = label1->Text->Length;
int* codes = new int[l];
for (int i = 0; i <l; i++)
{
int a = label1->Text[i];
codes[i] = label1->Text[i];
}
System::String^ start = "p0ChAT0K";
System::String^ finish = "J93K@dfa";
System::String^ Result = label1->Text;
length = start->Length + finish->Length + Result->Length;
bool* Cypher = new bool[length * 8];//зашифрованный текст в бинарном виде
if (radioButton2->Checked)
{
Cypher = ModVisioner(codes, start, finish, l);
}
int textsize = length * 8;
int contsize = 3 * widt*heigh;
if (textsize * 2<contsize)//внедрение в каждый второй младший бит
{
label2->Text = "Good Image";
}
else
{
label2->Text = "Bad Image";
}
vector<int>Cv;
for (int m = 0; m < 3; m++)
{
for (int i = 0; i < widt; i++)
{
for (int j = 0; j < heigh; j++)
{
uchar temp1 = Matvector[2 - m].at<uchar>(j, i);
Cv.push_back(temp1);
}
}
}
vector<int>Sv;//вектор изображения с ЦВЗ
vector< bool*>v;
for (int m = 0; m < length; m++)//текст в двоичной форме
{
bool* b = new bool[8];
for (int i = 0; i<8; i++)
{
b[i] = Cypher[m * 8 + i];
}
v.push_back(b);
delete b;
}
for (int i = 0; i < contsize; i++)
{
bool* P = new bool[8];//замена младшего бита
P = Decimal2Binary(Cv[i]);
if ((i % 2 == 0) && (i<length * 2))
{
int k = i / 16;
int l = (i % 16) / 2;
P[7] = v[k][l];
}
else
{
P[7] = rand() % 2;
}
Sv.push_back(Binary2Decimal(P));
delete P;
}
Mat Vector1 = cvCreateMat(heigh, widt, CV_8UC1);
Mat Vector2 = cvCreateMat(heigh, widt, CV_8UC1);
Mat Vector3 = cvCreateMat(heigh, widt, CV_8UC1);
vector<Mat> Vector;
Vector.push_back(Vector1);
Vector.push_back(Vector2);
Vector.push_back(Vector3);
for (int m = 0; m < 3; m++)
{
for (int i = 0; i < widt; i++)
{
for (int j = 0; j < heigh; j++)
{
Vector[2 - m].at<uchar>(j, i) = Sv[i*heigh + j];
}
}
}
Mat FResult = cvCreateMat(heigh, widt, CV_8UC1);
merge(Vector, FResult);//error here
imwrite("merged.jpg", FResult);
return FResult;
It is a code of steganoalgorithm LSB in OpenCV. before merging channels it works well. Please,help me and tell me why this exception is happens.
"before merging channels it works well." - i kinda doubt that.