У меня проблема, связанная с процессом нормализации во время проекта OpenCV. Функция, которую я должен использовать, называется cvNormalizeHist, однако я не знаю, как ее использовать непосредственно в коде.Нормализация гистограммы в OPENCV
C: void cvNormalizeHist(CvHistogram* hist, double factor)
Parameters:
hist – Pointer to the histogram.
factor – Normalization factor.
The function normalizes the histogram bins by scaling them so that the sum of the bins becomes equal to factor.
То, что я пытаюсь сделать что-то вроде:
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat src, dst;
/// Load image
src = imread(argv[1], 1);
if (!src.data)
{
return -1;
}
/// Separate the image in 3 places (B, G and R)
vector<Mat> bgr_planes;
split(src, bgr_planes);
/// Establish the number of bins
int histSize = 256;
/// Set the ranges (for B,G,R))
float range[] = { 0, 256 };
const float* histRange = { range };
bool uniform = true;
bool accumulate = false;
Mat b_hist, g_hist, r_hist;
/// Compute the histograms:
calcHist(&bgr_planes[0], 1, 0, Mat(), b_hist, 1, &histSize, &histRange, uniform, accumulate);
calcHist(&bgr_planes[1], 1, 0, Mat(), g_hist, 1, &histSize, &histRange, uniform, accumulate);
calcHist(&bgr_planes[2], 1, 0, Mat(), r_hist, 1, &histSize, &histRange, uniform, accumulate);
cvNormalizeHist(b_hist, 5); // (1)
CvHistogram histogram(); // (2)
...
waitKey(0);
return 0;
}
Я пытаюсь использовать такую функцию, однако ошибка предположить, что мне следует использовать CvHistogram вместо объекта Mat. И я не знаю, как конвертировать между этими объектами.
Любой может дать мне, как я могу это сделать или какие-либо предложения?
Больше информации, которые могут быть полезны: для Windows 10, Visual Studio 2013, OpenCV 3,0
С уважением
Однако моему учителю нужна программа тестирования с такой функцией. Любой способ справиться с этим и удовлетворить свои чушь? –
Извините за комментарий выше, однако университетский подход меня разочаровывает с некоторого времени. Это утопия, как социализм. –
Хорошо, у меня нет времени, чтобы обновить ответ с помощью кода _obsolete_. Но вы можете привести пример [здесь] (https://siddhantahuja.wordpress.com/2010/02/19/working-with-histograms-in-opencv-2/) о том, как создать CvHistogram. Затем вы можете применить свою функцию ... – Miki