Я пытаюсь получить Ориентационную гистограмму из результата фазы() Метод из CV. Я стараюсь, чтобы получить округлую ориентацию каждого пикселя и разделить его на 10. Так что это будет выглядеть так, что, например, для 5x5 Pixel Patch:Получить ориентировочную гистограмму из пиксельного патча OpenCV
{ 1 36 20 3 14
5 16 11 6 9
7 12 34 22 0
34 5 9 21 4
5 21 28 30 1}
Моя проблема в том, что я действительно не знаю, как проверить каждый пиксель патча, а затем получить OrientationValue для вычисления значения для гистограммы.
Мой код для получения ориентации Mat выглядит следующим образом:
Mat patch = src(Rect(px,py,15,15));
Mat Sx;
Sobel(patch, Sx, CV_32F, 1, 0, 3);
Mat Sy;
Sobel(patch, Sy, CV_32F, 0, 1, 3);
Mat mag, ori;
magnitude(Sx, Sy, mag);
phase(Sx, Sy, ori, true);
int** hist;
В переменной Hist я хочу добавить значения с помощью другого метода. Надеюсь, кто-то поймет, о чем я думаю, и могу помочь мне.
У меня есть план сейчас, как Перебрать данную ориентацию изображения я использую цикл, который показан в документации OpenCV Docu
for(i = 0; i < ori.rows; i++){
for(j = 0; j < ori.cols; j++){
cout << ori.at<uchar>(i,j) << endl;
}
}
Но доступ к ценностям как это обыкновению давать мне ценностную ориентацию. Любые подсказки?
Ori от типа CV_32F не CV_8U, поэтому попробовать 'ori.at (I, J)' или преобразовать Sx с 'convertScaleAbs ' –
PSchn
convertScaleAbs не работает, потому что' phase() 'нуждается в значениях флэотинга, поэтому забудьте об этом – PSchn
Он работает спасибо! Не знаю, как я мог это контролировать. –