Я делаю некоторую обработку изображений, чтобы узнать, я использую openCV с новым интерфейсом C ++.
У меня есть изображение RGB, я читаю версию в градациях серого, выровняю гистограмму, а затем использую canny для определения краев.
Вопрос в том, возвращает ли функция Canny изображение в градациях серого или двоичное изображение?
Я использую двойной цикл for для проверки значений пикселей в изображении, полученных в результате применения детектора контуров, и у меня много значений совершенно разных. В двоичном изображении должно быть только два значения 0 или 1 (0 или 255) ... Как я могу это сделать?
Мой код:
imagen = imread(nombre_imagen,0); //lee la imagen en escala de grises
equalizeHist(imagen,imagen);
Canny(binary,binary,0.66*threshold,1.33*threshold,3,true);
for(int i=0;i<binary.rows;i++){
for(int j=0;j<binary.cols;j++){
std::cout << binary.at<float>(i,j)<< ",";
}
std::cout << "\n";
}
Это матрица 183x183, и я могу видеть множество значений, даже некоторые nan
.
Как я могу сделать этот двоичный файл?
Для функции Канни я использую пороговое значение, получая «среднее» значение изображения в градациях серого; Я видел это здесь: http://www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/.