bool ReliabilityHistogram::run() { if(firstTime) { if(thermalARGB32.empty() || thermalARGB32.data == NULL) { this->height = m_data->reliabilityMap->height(); this->width = m_data->reliabilityMap->width(); this->thermalARGB32 = cv::Mat(height, width, CV_8UC4 ); } QByteArray string8bit = this->fileMaskName.toLocal8Bit(); // this->fieldMask = cv::imread(string8bit.data(), CV_LOAD_IMAGE_GRAYSCALE ); this->fieldMask = cv::Mat(); this->firstTime = false; } if(m_data->reliabilityMap->bits() == NULL || m_data->reliabilityMap->isNull() ) { AppendToLog("ReliabilityHistogram: Warning: 'reliability map' not found.\n"); return true; } memcpy(thermalARGB32.data, m_data->reliabilityMap->bits(), height*m_data->reliabilityMap->bytesPerLine()); #ifdef __OPENCV3__ cv::cvtColor(thermalARGB32, currThermal, cv::COLOR_RGBA2BGR); #else cv::cvtColor(thermalARGB32, currThermal, CV_RGBA2BGR); #endif reliability = thermal.thermalToReliability( currThermal ); float range[] = { 0, 255 } ; const float* histRange = { range }; cv::calcHist( &reliability, 1, 0, this->fieldMask, reliabHisto, 1, &numBins, &histRange, true, true ); if(m_data->frameNumber == this->showDataAtFrame) { cv::normalize(this->reliabHisto, histNorm, 0, 100, cv::NORM_MINMAX, -1, cv::Mat() ); for(int i = 0; i < 256; i++) { std::cout << histNorm.at<float>(i) << " "; } std::cout<< std::endl; } if(showHistogram) displayHistogram(this->reliabHisto); return true; }
int main() { int numScores = 0; int scores[100]; int* numScoresPointer = &numScores; readScores(scores, numScoresPointer); printf("\n\nScores:\n"); displayScores(scores, numScores); int numFreq = 0; struct freq frequencies[numScores]; int i; for (i = 0; i < numScores; i++) { (*(frequencies + i)).number = 0; } int* numFreqPointer = &numFreq; calcHistogram(frequencies, numFreqPointer, scores, numScores); printf("\n\n\nUnsorted Histogram:\n"); displayHistogram(frequencies, numFreq); sortHistogram(frequencies, numFreq); printf("\n\n\nSorted Histogram:\n"); displayHistogram(frequencies, numFreq); return 0; }
/***************************************************************************//** * Menu_PointProcesses_ModifiedContrastStretch * Author - Derek Stotz * * Displays an image histogram generated by QtImageLib subroutines * * Parameters - image - the image object to manipulate. * * Returns * true if successful, false if not ******************************************************************************/ bool PointProcessor::Menu_PointProcesses_ViewImageHistogram(Image &image) { displayHistogram(image.Histogram(), "Image Histogram"); return true; }