資源簡介
基于OpenCV自己實現的高斯濾波,Sobel邊緣檢測,3通道圖像分離,彩色圖轉灰度圖,高斯濾波比OpenCV自帶的GaussBlur要慢,僅作為理解原理學習之用。工程建議盡量用用OpenCV自帶的函數。
代碼片段和文件信息
#include
#include?
?
using?namespace?std;
using?namespace?cv;
void?GaussianSmooth(const?Mat&srcMat?&dstdouble?sigma)
{
?sigma=sigma>0?sigma:0;
?int?ksize=cvRound(3*sigma)*2+1;//保證ksize是奇數
?assert((ksize&1)==1);
?if(ksize==1)
?{
?dst=src.clone();
?return;
?}
?dst.create(src.size()src.type());
?Mat?tmp;
?tmp.create(src.size()src.type());
?double?*kernel=new?double[ksize];
?double?pscale=-1.0/(2*sigma*sigma);
?double?c=1.0/(sigma*sqrt(2*CV_PI));
?double?sum=0;
?int?kcenter=ksize/2;
?int?ijk;
?for(i=0;i ?{
?int?x=i-kcenter;
?kernel[i]=c*exp(pscale*x*x);
?sum+=kernel[i];
?}
?for(i=0;i ?kernel[i]/=sum;
?//進行x方向上的高斯模糊
?for(i=0;i ?{
?const?uchar?*pSrc
- 上一篇:K均值算法C語言
- 下一篇:用分治算法設計循環賽日程表
評論
共有 條評論