c++ - 从 OpenCV Canny 边缘检测器获取角度

标签 c++ c opencv image-processing edge-detection

我想使用 OpenCV 的 Canny 边缘检测器,如 this question 中概述的那样.例如:

cv::Canny(image,contours,10,350); 

但是,我不仅希望得到最终的阈值图像,而且我还希望得到检测到的每个像素的边缘角度。这在 OpenCV 中可能吗?

最佳答案

canny 不会直接给你这个。 但是,您可以根据 canny() 内部使用的 Sobel 变换计算角度。

伪代码:

    cv::Canny(image,contours,10,350);
    cv::Sobel(image, dx, CV_64F, 1, 0, 3, 1, 0, cv::BORDER_REPLICATE);
    cv::Sobel(image, dy, CV_64F, 0, 1, 3, 1, 0, cv::BORDER_REPLICATE);

    cv::Mat angle(image.size(), CV_64F)

    foreach (i,j) such that contours[i, j] > 0
    {
        angle[i, j] = atan2(dy[i,j], dx[i , j])
    }

关于c++ - 从 OpenCV Canny 边缘检测器获取角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19530060/

相关文章:

OpenCV 均值/SD 过滤器

OpenCV GPU FaceDetector 示例在随机帧上崩溃

c++ - 使用分而治之的最大子数组和

C++ 套接字编程 TCP/IP 套接字缓冲区的最大大小?

c++ - 在 C++ 中实现 SHA-256

c - 尝试打印字符时程序崩溃

c - 斑马拼图 - C 中的约束满足

c++ - 要加倍或 float 的字符串会截去小数点

通过指针动态复制到 uint8_t 数组中

opencv - Jetson Nano 上带有 CUDA 的 ROS 和 OpenCV : Incompatible versions