要是真的想要返回去的话,可以试一下为每次中值滤波后的数据开辟新的内存,想返回的话就从游罩内存中提取前一步的数据。
谢谢你贴的代码,塌答这个FB写得真不错。这个FB思路是这样的,建了个先入先出的队列(这儿叫堆栈,先入先出的结构应该叫队列),然后FB刷新一次,后面就补充一个当前值,如果队列满了,那么就把最旧的那个数据扔掉正运,在队列最后加上最新的数据。
流程如下:
1. 存入最新值
2. 开辟临时数组,为后面排序做准备。
3. 排序,把当前队列里的值按降序排列
4. 用数列的下标,把最中间下标那个值取出来,就是中间值了。(第三步排序过)
是降序还是升序我团清慧没仔细看,可能看错。
#include <iostream>#include <iomanip>
using namespace std
int A[7][7]=
{{50,60,30,100,120,80,190},
{40,70,10,30,200,250,180},
{30,90,100,70,40,50,50},
{10,10,20,90,200,300,70},
{200,100,17,15,19,30,37},
{55,59,270,32,45,77,19},
{18,99,33,45,65,74,88}}
int Middle(int a,int b,int c)
{
int mid=a
if((mid-b)*(mid-c)>0)
mid=b
if((mid-a)*(mid-c)>0)
mid=c
return mid
}
int main()
{
int Mid[7][5],i,j
for(i=0i<7i++)
{
for(j=1j<6j++)
Mid[i][j-1]=Middle(A[i][j-1],A[i][j],A[i][j+1])
}
for(i=0i<7i++)
{
for(j=0j<团迟5j++)
cout<<饥烂setw(5)<<Mid[i][j]
cout<<endl
}
return 0
}
/塌肢李/希望是你想要的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)