OpenCV C++ 简单小技巧 - 梯度 (8

Sobel算子,Scharr算子

结合了高斯模糊和微分,很好抗噪能力,kernel size为-1时 Scharr速度更快

Laplacian算子

拉普拉斯算子,对Sobel的二阶导数

Laplacian(frame, f1, CV_8UC1,1);
Laplacian(frame, f2, CV_8UC1,5);
Sobel(frame, f3, CV_8UC1, 1, 0,5);
Sobel(frame, f4, CV_8UC1, 0, 1,5);
Sobel(frame, f5, CV_8UC1, 1, 1,5);
OpenCV C++ 简单小技巧 - 梯度 (8_第1张图片
image.png
OpenCV C++ 简单小技巧 - 梯度 (8_第2张图片
image.png

单向性修正

使用 CV_64F 纠正负反差 (8u没有负值,无法将高亮到低亮标记出来

64f并不能直接输出图像,必须转换回8u格式

f1 = cv::abs(f1);
normalize(f1, f1, 0x00, 0xFF, cv::NORM_MINMAX, CV_8U);
OpenCV C++ 简单小技巧 - 梯度 (8_第3张图片
image.png

你发现了吗? 算子实现的效果,其实就是颜色变化的导数/微分,也就是颜色的变化量,颜色变化的越剧烈,则导数图像越明显

你可能感兴趣的:(OpenCV C++ 简单小技巧 - 梯度 (8)