void KeyPointsDeliverer::calcGradientImages(Mat& mouthImg) { double pseudoHuePxl = 0.0; int luminancePxl = 0; Mat rTop(mouthImg.rows, mouthImg.cols, CV_8UC1); Mat rMid(mouthImg.rows, mouthImg.cols, CV_8UC1); Mat rLow(mouthImg.rows, mouthImg.cols, CV_8UC1); for (int i = 0; i < mouthImg.rows; ++i) { for (int j = 0; j < mouthImg.cols; ++j) { pseudoHuePxl = imageProcessing.pseudoHuePxl(mouthImg, j, i); luminancePxl = imageProcessing.luminancePxl(mouthImg, j, i); rTop.at<uchar>(i,j) = (int) (pseudoHuePxl - luminancePxl); rMid.at<uchar>(i,j) = (int) (pseudoHuePxl - luminancePxl); rLow.at<uchar>(i,j) = (int) (pseudoHuePxl + luminancePxl); } } double minVal, maxVal; Mat rTopTemp; //Sobel(rTop, rTopTemp, CV_32FC1, 0, 1); Scharr(rTop, rTopTemp, CV_32FC1, 0, 1); minMaxLoc(rTopTemp, &minVal, &maxVal); rTopTemp.convertTo(rTopFinal, CV_8UC1, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal)); Mat rMidTemp; //Sobel(rMid, rMidTemp, CV_32FC1, 0, 1); Scharr(rMid, rMidTemp, CV_32FC1, 0, 1); minMaxLoc(rMidTemp, &minVal, &maxVal); rMidTemp.convertTo(rMidFinal, CV_8UC1, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal)); for (int i = 0; i < mouthImg.rows; ++i) { for (int j = 0; j < mouthImg.cols; ++j) { pseudoHuePxl = imageProcessing.pseudoHuePxl(mouthImg, j, i); rMidFinal.at<uchar>(i,j) = (int) (rMidFinal.at<uchar>(i,j) * pseudoHuePxl); } } Mat rLowTemp; //Sobel(rLow, rLowTemp, CV_32FC1, 0, 1); Scharr(rLow, rLowTemp, CV_32FC1, 0, 1); minMaxLoc(rLowTemp, &minVal, &maxVal); rLowTemp.convertTo(rLowFinal, CV_8UC1, 255.0/(maxVal - minVal), -minVal * 255.0/(maxVal - minVal)); }
void FancyLabel::createImageSections(){ int upperMiddle = m_cutHeight - m_sectionHeight/2; QRect rTop(0, 0, m_originalImage.width(), upperMiddle); m_top = m_originalImage.copy(rTop); Q_ASSERT(m_top.height() == upperMiddle); int lowerMiddle = (m_cutHeight + m_sectionHeight/2 +1); QRect rMiddle(0, upperMiddle +1, m_originalImage.width(), lowerMiddle - upperMiddle); m_middle =m_originalImage.copy(rMiddle); QRect rBottom(0, lowerMiddle+1, m_originalImage.width(), m_originalImage.height() - lowerMiddle); m_bottom =m_originalImage.copy(rBottom); }