gzr2017 / ImageProcessing100Wen

「画像処理100本ノック」中文版本!为图像处理初学者设计的 100 个问题。
https://github.com/yoyoyo-yo/Gasyori100knock
MIT License
3.59k stars 1.06k forks source link

第八个问题高斯滤波,代码运行后出现断言错误 #33

Open yz151120 opened 4 years ago

zjyjshtxdy commented 4 years ago

它几个线性滤波的kernel都是动态申请的大小(cpp),我也不知道哪个神奇编译器支持这种语法,总之把kernel的内存申请改一下就能跑了

Yz-ing commented 4 years ago

它几个线性滤波的kernel都是动态申请的大小(cpp),我也不知道哪个神奇编译器支持这种语法,总之把kernel的内存申请改一下就能跑了

你好,我在程序前面用了#define进行定义数组大小,之前那个断言错误是因为for循环遍历过程中if语句中出现越界错误。上面说的是有一个补零操作,我直接把程序改成了图像边缘一圈的像素不进行滤波 for(int i=floor((float)(Kernel_size/2));i<imgrow-floor((float)(Kernel_size/2));i++){ for(int j=floor((float)(Kernel_size/2));j<imgcol-floor((float)(Kernel_size/2));j++){ ......... } } 你可以把内存申请的程序给我看下嘛

zjyjshtxdy commented 4 years ago

内存就动态申应该就可以了,剩下就51行少两个特判你也提到了

HANjf0822 commented 1 year ago

在原始图像外面进行补零操作就行了