【发布时间】:2011-03-13 22:43:30
【问题描述】:
我正在做一些图像处理来学习,我正在使用带有新 C++ iterface 的 openCV。
我有一个 RGB 图像,我读取灰度版本,均衡直方图,然后使用 canny 检测边缘。
问题是:Canny 函数返回的是灰度图像还是二进制图像? 我使用双循环来检查图像中像素的值,这是由于应用了精明的边缘检测器,我有很多完全不同的值。在二值图像中必须只有两个值 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。
如何制作这个二进制文件?
对于 Canny 函数,我使用阈值来获取灰度图像的“均值”;我在这里看到了:http://www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/。
【问题讨论】: