void GpsLocation::calculateXY() { KKJ outX(0); KKJ outY(0); WGS84lola_to_KKJxy(this->longitude, this->latitude, &outX, &outY); this->m_x.setNum(outX); this->m_y.setNum(outY); }
void Map::save(QString dir) { QDir qDir(dir); qDir.mkpath(dir); if(dir[dir.size() - 1] != '\\') dir += '\\'; leftPopulation -> savePopulation(dir + "LeftPopulation\\"); rightPopulation -> savePopulation(dir + "RightPopulation\\"); QFile *fileX = new QFile(dir + "mapX.save"); QFile *fileY = new QFile(dir + "mapY.save"); QFile *fileS = new QFile(dir + "mapS.save"); if (! fileX -> open(QIODevice::WriteOnly | QIODevice::Text) || ! fileY -> open(QIODevice::WriteOnly | QIODevice::Text) || ! fileS -> open(QIODevice::WriteOnly | QIODevice::Text) ) { // Error while trying to write file } else { // Everything is OK QTextStream outX(fileX); QTextStream outY(fileY); QTextStream outS(fileS); outS << minDeltaX << "\n"; outS << maxDeltaX << "\n"; outS << minDeltaY << "\n"; outS << maxDeltaY << "\n"; outS << lengthStartEnd << "\n"; outS << lengthTotal << "\n"; outX << points.size() << "\n"; outY << points.size() << "\n"; for(int i = 0; i < points.size(); ++i) { QString tmp; tmp = ""; tmp.setNum(points[i].x, 'f', 4); outX << tmp << "\n"; tmp = ""; tmp.setNum(points[i].y, 'f', 4); outY << tmp << "\n"; } } fileX -> close(); fileY -> close(); fileS -> close(); }
void lx(float* _A, float* _B, float* _X) { /* aliases for all variables */ #define A(i, j) _A[(3*(j) + -4 + (i))] #define B(i) _B[(-1 + (i))] #define X(i) _X[(-1 + (i))] #define C(t, p) _C[(3*(p) + -6 + (t))] #define outX(t, p) X(p) /* allocate memory for local variables */ float * _C = (float *) malloc(sizeof(float)*(6)); /* loops variables */ int i; int p; int t; /* a few loops */ t = 2; p = 1; outX(t, p) = (B(p) / A(p, p)); t = 3; p = 1; C(t, p) = (A((-1 + t), p) * outX(2, p)); t = 4; p = 1; C(t, p) = (A((-1 + t), p) * outX(2, p)); p = 2; outX(t, p) = ((B(p) - C((-1 + t), (-1 + p))) / A(p, p)); /* dead code removed */ t = 5; { for (p = (-3 + t); p <= rfloor(((-1 + t)),(2)); ++p) { C(t, p) = (C((-1 + t), (-1 + p)) + (A((-p + t), p) * outX(2*p, p))); } if (((t)%2) == 0) { p = (t)/2; outX(t, p) = ((B(p) - C((-1 + t), (-1 + p))) / A(p, p)); } } t = 6; p = 3; outX(t, p) = ((B(p) - C((-1 + t), (-1 + p))) / A(p, p)); /* clean up local variables' memory */ /* commented out because it was crashing at run time*/ /* free(_C); */ /* and finally undef aliases */ #undef A #undef B #undef X #undef C #undef outX }
cv::Mat flow_2_RGB( const cv::Mat &inpFlow, const float &max_size ) { ////////////////////////// bool use_value = false; cv::Mat sat; cv::Mat rgbFlow; ////////////////////////// if (inpFlow.empty()) exit(1); if (inpFlow.depth() != CV_32F) { std::cout << "FlowTo RGB: error inpFlow wrong data type ( has be CV_32FC2" << std::endl; exit(1); } if (!sat.empty() ) if( sat.type() != CV_8UC1) { std::cout << "FlowTo RGB: error sat must have type CV_8UC1" << std::endl; exit(1); } const float grad2deg = (float)(90/3.141); double satMaxVal = 0; double minVal = 0; if(!sat.empty()) { cv::minMaxLoc(sat, &minVal, &satMaxVal); satMaxVal = 255.0/satMaxVal; } cv::Mat pol(inpFlow.size(), CV_32FC2); float mean_val = 0, min_val = 1000, max_val = 0; for(int r = 0; r < inpFlow.rows; r++) { for(int c = 0; c < inpFlow.cols; c++) { cv::Mat1f inX( 1,1); inX(0,0)=inpFlow.at<cv::Point2f>(r,c).x; cv::Mat1f inY( 1,1); inY(0,0)=inpFlow.at<cv::Point2f>(r,c).y; cv::Mat1f outX(1,1); cv::Mat1f outY(1,1); cv::cartToPolar( inX, inY, outX, outY, false ); cv::Point2f polar; polar.x = outX(0,0); polar.y = outY(0,0); polar.y *= grad2deg; mean_val +=polar.x; max_val = MAX(max_val, polar.x); min_val = MIN(min_val, polar.x); pol.at<cv::Point2f>(r,c) = cv::Point2f(polar.y,polar.x); } } mean_val /= inpFlow.size().area(); float scale = max_val - min_val; float shift = -min_val; scale = 255.f/scale; if( max_size > 0) { scale = 255.f/max_size; shift = 0; } //calculate the angle, motion value cv::Mat hsv(inpFlow.size(), CV_8UC3); uchar * ptrHSV = hsv.ptr<uchar>(); int idx_val = (use_value) ? 2:1; int idx_sat = (use_value) ? 1:2; for(int r = 0; r < inpFlow.rows; r++, ptrHSV += hsv.step1()) { uchar * _ptrHSV = ptrHSV; for(int c = 0; c < inpFlow.cols; c++, _ptrHSV+=3) { cv::Point2f vpol = pol.at<cv::Point2f>(r,c); _ptrHSV[0] = cv::saturate_cast<uchar>(vpol.x); _ptrHSV[idx_val] = cv::saturate_cast<uchar>( (vpol.y + shift) * scale); if( sat.empty()) _ptrHSV[idx_sat] = 255; else _ptrHSV[idx_sat] = 255- cv::saturate_cast<uchar>(sat.at<uchar>(r,c) * satMaxVal); } } std::vector<cv::Mat> vec; cv::split(hsv, vec); cv::equalizeHist(vec[idx_val],vec[idx_val]); cv::merge(vec,hsv); cv::Mat rgbFlow32F; cv::cvtColor(hsv, rgbFlow32F, CV_HSV2BGR); rgbFlow32F.convertTo(rgbFlow, CV_8UC3); /////////////// return rgbFlow; /////////////// }