QVector<QVector<double>> transpose(QVector<QVector<double>> a) { int m = a.size(); int n = a.front().size(); QVector<double> r(m); QVector<QVector<double>> aT(n,r); for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { aT[j][i]=a[i][j]; } } return aT; }
void MainWindow::FilterBySymSize() { int s=aSyms.Size(); int nS=s; TCL::Array<TCL::Array<TIL::GrayImage>> aT(s); for (int i=0; i<s; i++) { aT[i].Resize(aSyms[i].Size()); for (int j=0; j<aSyms[i].Size(); j++) { aT[i][j].Copy(aSyms[i][j]); } } TCL::Array<bool> &aDel=aBad; aDel.Resize(s); aDel.Fill(false); for (int i=0; i<s; i++) { int nProper=0; for (int j=0; j<aT[i].Size(); j++) { if (aT[i][j].Height()>aT[i][j].Width()*symsratio) { nProper++; } } int VERYVERYVERYMAJIC=10; if ((nProper<nSyms)||(nProper>VERYVERYVERYMAJIC)) { aDel[i]=true; nS--; } } //aSyms.Resize(nS); //nS=0; //for (int i=0; i<s; i++) //{ // if (!aDel[i]) // { // aSyms[nS].Resize(aT[i].Size()); // for (int j=0; j<aT[i].Size(); j++) // { // aSyms[nS][j].Copy(aT[i][j]); // } // nS++; // } //} //for (int i=s-1; i>=0; i--) //{ // if (aDel[i]) // { // aSyms.Remove(i); // } //} }