void Triangulation::calculateLocalBackground() { // local calc BG //Calculation and testing background qDebug() << "start calc bg"; vector < Mat > pics1; vector < Mat > pics2; for (int i = 1; i <= 4; i++) { Mat grey1, grey2; string s = QString::number(i).toUtf8().constData(); Mat img1 = imread("image1150330fish" + s + ".jpg"); Mat img2 = imread("image2150330fish" + s + ".jpg"); cvtColor(img1, grey1, CV_BGR2GRAY); cvtColor(img2, grey2, CV_BGR2GRAY); pics1.push_back(grey1); pics2.push_back(grey2); } qDebug() << "added imgs"; Q_ASSERT(pics1.size() == pics2.size()); int w = 1600; int h = 1200; Mat bg1(h, w, CV_8UC1); Mat bg2(h, w, CV_8UC1); qDebug() << "bg1.cols: " << bg1.cols; qDebug() << "bg1.rows: " << bg1.rows; qDebug() << "pics1[0].cols: " << pics1[0].cols; qDebug() << "pics1[0].rows: " << pics1[0].rows; for (int i = 0; i < h; i++) { //rows for (int j = 0; j < w; j++) { //cols long long int s1 = 1; //0 long long int s2 = 1; //0 QVector < int > m1; QVector < int > m2; for (int k = 0; k < pics1.size(); k++) { s1 *= pics1[k].at<uchar>(i, j); s2 *= pics2[k].at<uchar>(i, j); m1.push_back(pics1[k].at<uchar>(i, j)); m2.push_back(pics2[k].at<uchar>(i, j)); //qDebug() << "pics1[k].at<uchar>(i, j): " << pics1[k].at<uchar>(i, j); } qSort(m1); qSort(m2); bg1.at<uchar>(i, j) = m1[m1.size() / 2]; bg2.at<uchar>(i, j) = m2[m2.size() / 2]; } } background->setImages(bg1, bg2); isBackgroundCalculated = true; qDebug() << "calced"; }
void Triangulation::calculateBackground() { //Calculation and testing background if (stereoImages.size() <= 0) { return; } qDebug() << "start calc bg"; vector < Mat > pics1; vector < Mat > pics2; for (int i = 0; i < stereoImages.size(); i++) { Mat grey1, grey2; cvtColor(stereoImages[i]->getLeft(), grey1, CV_BGR2GRAY); cvtColor(stereoImages[i]->getRight(), grey2, CV_BGR2GRAY); pics1.push_back(grey1); pics2.push_back(grey2); qDebug() << i; } qDebug() << "added imgs"; Q_ASSERT(pics1.size() == pics2.size()); int w = pics1[0].cols; int h = pics1[0].rows; Mat bg1(h, w, CV_8UC1); Mat bg2(h, w, CV_8UC1); qDebug() << "bg1.cols: " << bg1.cols; qDebug() << "bg1.rows: " << bg1.rows; qDebug() << "pics1[0].cols: " << pics1[0].cols; qDebug() << "pics1[0].rows: " << pics1[0].rows; for (int i = 0; i < h; i++) { //rows for (int j = 0; j < w; j++) { //cols long long int s1 = 1; //0 long long int s2 = 1; //0 QVector < int > m1; QVector < int > m2; for (int k = 0; k < pics1.size(); k++) { s1 *= pics1[k].at<uchar>(i, j); s2 *= pics2[k].at<uchar>(i, j); m1.push_back(pics1[k].at<uchar>(i, j)); m2.push_back(pics2[k].at<uchar>(i, j)); //qDebug() << "pics1[k].at<uchar>(i, j): " << pics1[k].at<uchar>(i, j); } qSort(m1); qSort(m2); bg1.at<uchar>(i, j) = m1[m1.size() / 2]; bg2.at<uchar>(i, j) = m2[m2.size() / 2]; } } qDebug() << "calced"; background->setImages(bg1, bg2); }
void ScopePanel::drawPanelContents() { if (scopeMode == SCOPE_MODE_Y) { bgPanel.setFillColor(ThemeMgr::mgr.currentTheme->scopeBackground, ThemeMgr::mgr.currentTheme->scopeBackground * 2.0); bgPanel.calcTransform(transform); bgPanel.draw(); glLineWidth(1.0); glEnable(GL_LINE_SMOOTH); glLoadMatrixf(transform.to_ptr()); glColor3f(ThemeMgr::mgr.currentTheme->scopeLine.r * 0.35, ThemeMgr::mgr.currentTheme->scopeLine.g * 0.35, ThemeMgr::mgr.currentTheme->scopeLine.b * 0.35); glBegin (GL_LINES); glVertex2f(-1.0, 0.0); glVertex2f(1.0, 0.0); glEnd(); } else if (scopeMode == SCOPE_MODE_2Y) { bgPanelStereo[0].setFillColor(ThemeMgr::mgr.currentTheme->scopeBackground, ThemeMgr::mgr.currentTheme->scopeBackground * 2.0); bgPanelStereo[1].setFillColor(ThemeMgr::mgr.currentTheme->scopeBackground, ThemeMgr::mgr.currentTheme->scopeBackground * 2.0); bgPanelStereo[0].calcTransform(transform); bgPanelStereo[0].draw(); bgPanelStereo[1].calcTransform(transform); bgPanelStereo[1].draw(); glLineWidth(1.0); glLoadMatrixf(transform.to_ptr()); glColor3f(ThemeMgr::mgr.currentTheme->scopeLine.r, ThemeMgr::mgr.currentTheme->scopeLine.g, ThemeMgr::mgr.currentTheme->scopeLine.b); glEnable(GL_LINE_SMOOTH); glBegin (GL_LINES); glVertex2f(-1.0, 0.0); glVertex2f(1.0, 0.0); glColor3f(ThemeMgr::mgr.currentTheme->scopeLine.r * 0.35, ThemeMgr::mgr.currentTheme->scopeLine.g * 0.35, ThemeMgr::mgr.currentTheme->scopeLine.b * 0.35); glVertex2f(-1.0, 0.5); glVertex2f(1.0, 0.5); glVertex2f(-1.0, -0.5); glVertex2f(1.0, -0.5); glEnd(); } else if (scopeMode == SCOPE_MODE_XY) { RGBA4f bg1(ThemeMgr::mgr.currentTheme->scopeBackground), bg2(ThemeMgr::mgr.currentTheme->scopeBackground * 2.0); bg1.a = 0.05f; bg2.a = 0.05f; bgPanel.setFillColor(bg1, bg2); bgPanel.calcTransform(transform); bgPanel.draw(); glLineWidth(1.0); glEnable(GL_POINT_SMOOTH); glPointSize(1.0); glLoadMatrixf(transform.to_ptr()); glColor3f(ThemeMgr::mgr.currentTheme->scopeLine.r * 0.15, ThemeMgr::mgr.currentTheme->scopeLine.g * 0.15, ThemeMgr::mgr.currentTheme->scopeLine.b * 0.15); } if (points.size()) { glEnable (GL_BLEND); glEnable (GL_LINE_SMOOTH); glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); if (scopeMode == SCOPE_MODE_XY) { glBlendFunc(GL_ONE, GL_ONE); } else { glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); } glColor4f(ThemeMgr::mgr.currentTheme->scopeLine.r, ThemeMgr::mgr.currentTheme->scopeLine.g, ThemeMgr::mgr.currentTheme->scopeLine.b, 1.0); glEnableClientState (GL_VERTEX_ARRAY); glVertexPointer(2, GL_FLOAT, 0, &points[0]); glLineWidth(1.5); if (scopeMode == SCOPE_MODE_Y) { glLoadMatrixf(bgPanel.transform.to_ptr()); glDrawArrays(GL_LINE_STRIP, 0, points.size() / 2); } else if (scopeMode == SCOPE_MODE_2Y) { glLoadMatrixf(bgPanelStereo[0].transform.to_ptr()); glDrawArrays(GL_LINE_STRIP, 0, points.size() / 4); glLoadMatrixf(bgPanelStereo[1].transform.to_ptr()); glDrawArrays(GL_LINE_STRIP, points.size() / 4, points.size() / 4); } else if (scopeMode == SCOPE_MODE_XY) { glLoadMatrixf(bgPanel.transform.to_ptr()); glDrawArrays(GL_POINTS, 0, points.size() / 2); } glLineWidth(1.0); glDisableClientState(GL_VERTEX_ARRAY); glDisable(GL_BLEND); } }