(卷积的概念可以看看第14课)
理论
相关API
// 给目标图像设置边框
copyMakeBorder(
代码示例
using namespace cv;
int main(int argc, char** argv){Mat src,dst;int ksize = 0;src = imread(...);if( !src.data ){return -1;}//原图char INPUT_WIN[] = "input image";namedWindow(INPUT_WIN, CV_WINDOW_AUTOSIZE);imshow(INPUT_WIN, src);//单纯只设置边框的图片/*int top = (int)(0.05*src.rows);int bottom = (int)(0.05*src.rows);int left= (int)(0.05*src.cols);int right= (int)(0.05*src.cols);RNG rng(12345); //生成随机数int borderType = BORDER_DEFAULT;int c = 0 ;while(true){c = waitKey(500);if((char)c == 27){ //这里27是指ESC键break;}if((char)c == 'r'){borderType = BORDER_REPLICATE;}else if((char)c == 'w'){borderType = BORDER_WRAP;}else if((char)c == 'c'){borderType = BORDER_CONSTANT;}Scalar color = Scalar(rng.uniform(0,255), rng.uniform(0,255), rng.uniform(0,255));copyMakeBorder(src, dst, top, bottom, left, right, borderType, color); //注意这里的color, 只有类型是BORDER_CONSTANT的时候才会生效, 其他的类型它都没啥用imshow("Border Demo", dst);}*/// 使用边框处理过后的图片, 再进行高斯模糊Mat GaussianDst;GaussianBlur(src, GaussianDst, Size(5,5), 0 , 0, BORDER_DEFAULT); //四种类型切换,效果就不截图了,因为区别太小了, 大家可以自己试试, 不处理边框就高斯模糊, 还有处理边框之后再进行高斯模糊, 两者的区别imshow("GaussianBlur Image",GaussianDst);waitKey(0);return 0;
}
效果截图:
BORDER_DEFAULT效果:
BORDER_REPLICATE效果:
BORDER_WRAP效果:
BORDER_CONSTANT: