边缘检测器Canny
RGB图
→
\rightarrow
→ 除噪
→
\rightarrow
→ Gray图
→
\rightarrow
→ Canny边缘检测 此例中没有进行除噪
#include <opencv2/opencv.hpp>
int main(int argc,char** argv) {
cv::Mat img_rgb,img_gry,img_cny;
cv::namedWindow("Example_Gray",cv::WINDOW_AUTOSIZE);
cv::namedWindow("Example_Canny",cv::WINDOW_AUTOSIZE);
img_rgb=cv::imread(argv[1]);
cv::cvtColor(img_rgb,img_gry,cv::COLOR_BGR2GRAY);
cv::imshow("Example_Gray",img_gry);
cv::Canny(img_gry,img_cny,10,100,3,true);
cv::imshow("Example_Canny",img_cny);
cv::waitKey(0);
return 0;
}
终端中输入
mkdir build
cd build
cmake ..
make
cd ..
./build/opencv_5 1130276.jpg
图像金字塔是一种经典的图像多尺寸描述方法,它将降采样和平滑滤波结合在一起,对图像进行多尺度表示。图像金字塔由不同尺寸的图像叠加而成,通常每一层的尺寸都是上一层的一半。通常用于高效的图像分析,这种处理技术的意义在于:我们在对图像进行处理时,大多是要着眼于图像中有意义的部分,而同一幅图像中可能含有不同尺度下“有意义”的信息,为了充分利用这些图像信息,就需要对图像进行多尺度描述了。 缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图
结合图像金字塔操作(两次降采样)后采用Canny边缘检测器
#include <opencv2/opencv.hpp>
int main(int argc,char** argv) {
cv::Mat img_rgb,img_gry,img_cny,img_pyr,img_pyr2;
cv::namedWindow("Example_Gray",cv::WINDOW_AUTOSIZE);
cv::namedWindow("Example_Canny",cv::WINDOW_AUTOSIZE);
img_rgb=cv::imread(argv[1]);
cv::cvtColor(img_rgb,img_gry,cv::COLOR_BGR2GRAY);
cv::imshow("Example_Gray",img_gry);
cv::pyrDown(img_gry,img_pyr);
cv::pyrDown(img_pyr,img_pyr2);
cv::Canny(img_pyr2,img_cny,10,100,3,true);
cv::imshow("Example_Canny",img_cny);
cv::waitKey(0);
return 0;
}
终端中输入
mkdir build
cd build
cmake ..
make
cd ..
./build/opencv_5 470111.jpg
|