OpenCV - 计算图像的边缘强度
OpenCV - Calculating edge strength of image
我是图像处理的新手,我需要计算图像中存在的边缘强度。假设您有一个图像,并向该图像添加模糊效果。这两个图像的边缘强度不同。我需要分别计算两个图像的边缘强度。
到目前为止,我已经使用以下代码对图像进行了精明的边缘检测。
Mat src1;
src1 = imread("D.PNG", CV_LOAD_IMAGE_COLOR);
namedWindow("Original image", CV_WINDOW_AUTOSIZE);
imshow("Original image", src1);
Mat gray, edge, draw;
cvtColor(src1, gray, CV_BGR2GRAY);
Canny(gray, edge, 50, 150, 3);
edge.convertTo(draw, CV_8U);
namedWindow("image", CV_WINDOW_AUTOSIZE);
imshow("image", draw);
waitKey(0);
return 0;
有没有办法计算这个边缘图像的强度..?
>mean
会给你图像的平均值。如果您使用上述Canny
,您可以执行以下操作:
Scalar pixelMean = mean(draw);
要仅获得边缘像素的平均值,您还需要使用图像作为蒙版:
Scalar edgeMean = mean(draw, draw);
不幸的是,由于Canny
将所有边缘像素设置为 255
,您的平均值将始终255
。如果这是您要查找的度量,则可能需要使用Sobel
(在高斯模糊之后)并计算梯度以获得相对边缘强度。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- 彩色图像的边缘检测 CannyAlgorithm.
- OPENCV :从图像左边缘开始计算像素
- OpenCV - 计算图像的边缘强度
- 在黑色图像上叠加精明的边缘