Я пытаюсь выполнить многопорожное с помощью OTSU. Метод, который я использую в настоящее время, на самом деле, максимизируя дисперсию между классом, мне удалось получить то же пороговое значение, указанное как библиотека OpenCV. Тем не менее, это просто с помощью метода OTSU один раз. Где я могу сделать после получения исходного значения OTSU? Я бы признателен некоторыми подсказками, я играл с кодом, добавляя один внешний для цикла, но рассчитанное следующее значение всегда 254 для любого данного изображения: (< /p>
мой код, если необходимо: < /p>
//compute histogram first
cv::Mat imageh; //image edited to grayscale for histogram purpose
//imageh=image; //to delete and uncomment below;
cv::cvtColor(image, imageh, CV_BGR2GRAY);
int histSize[1] = {256}; // number of bins
float hranges[2] = {0.0, 256.0}; // min andax pixel value
const float* ranges[1] = {hranges};
int channels[1] = {0}; // only 1 channel used
cv::MatND hist;
// Compute histogram
calcHist(&imageh, 1, channels, cv::Mat(), hist, 1, histSize, ranges);
IplImage* im = new IplImage(imageh);//assign the image to an IplImage pointer
IplImage* finalIm = cvCreateImage(cvSize(im->width, im->height), IPL_DEPTH_8U, 1);
double otsuThreshold= cvThreshold(im, finalIm, 0, 255, cv::THRESH_BINARY | cv::THRESH_OTSU );
cout
Подробнее здесь: https://stackoverflow.com/questions/227 ... ith-opencv