#include"cv.h"
#include"highgui.h"
//用梯度金字塔變換實現彩色影象四個方向的濾波
//下面是單獨對空間的申請
/*pimg[1] = cvcreateimage(cvsize(pimg[0]->width/2, pimg[0]->height/2),
ipl_depth_8u,
pimg[0]->nchannels);
pimg[2] = cvcreateimage(cvsize(pimg[0]->width/4, pimg[0]->height/4),
ipl_depth_8u,
pimg[0]->nchannels);
pimg[3] = cvcreateimage(cvsize(pimg[0]->width/8, pimg[0]->height/8),
ipl_depth_8u,
pimg[0]->nchannels);*/
/*pimg2[1] = cvcreateimage(cvsize(pimg[0]->width/2, pimg[0]->height/2),
ipl_depth_8u,
pimg[0]->nchannels);
pimg2[2] = cvcreateimage(cvsize(pimg[0]->width/4, pimg[0]->height/4),
ipl_depth_8u,
pimg[0]->nchannels);
pimg2[3] = cvcreateimage(cvsize(pimg[0]->width/8, pimg[0]->height/8),
ipl_depth_8u,
pimg[0]->nchannels);*/
/*dstj[0] = cvcreateimage(cvsize(pimg[0]->width, pimg[0]->height), ipl_depth_8u, 1);
dstk[0] = cvcreateimage(cvsize(pimg[0]->width, pimg[0]->height), ipl_depth_8u, 1);
dstl[0] = cvcreateimage(cvsize(pimg[0]->width, pimg[0]->height), ipl_depth_8u, 1);
dstj[1] = cvcreateimage(cvsize(pimg[0]->width/2, pimg[0]->height/2), ipl_depth_8u, 1);
dstk[1] = cvcreateimage(cvsize(pimg[0]->width/2, pimg[0]->height/2), ipl_depth_8u, 1);
dstl[1] = cvcreateimage(cvsize(pimg[0]->width/2, pimg[0]->height/2), ipl_depth_8u, 1);
dstj[2] = cvcreateimage(cvsize(pimg[0]->width/4, pimg[0]->height/4), ipl_depth_8u, 1);
dstk[2] = cvcreateimage(cvsize(pimg[0]->width/4, pimg[0]->height/4), ipl_depth_8u, 1);
dstl[2] = cvcreateimage(cvsize(pimg[0]->width/4, pimg[0]->height/4), ipl_depth_8u, 1);
dstj[3] = cvcreateimage(cvsize(pimg[0]->width/8, pimg[0]->height/8), ipl_depth_8u, 1);
dstk[3] = cvcreateimage(cvsize(pimg[0]->width/8, pimg[0]->height/8), ipl_depth_8u, 1);
dstl[3] = cvcreateimage(cvsize(pimg[0]->width/8, pimg[0]->height/8), ipl_depth_8u, 1);*/
pimg[0]=cvcloneimage(src); //
對pimgi
進行下取樣
for( i=0;i<3;i++)
cvpyrdown(pimg[i], pimg[i+1], cv_gaussian_5x5);
for( i=0;i<3;i++)
pimg2[i]=cvcloneimage(pimg[i]);
double ka[9] = ;//
這裡高斯核濾波器歸一化
cvmat k1;
k1 = cvmat( 3, 3, cv_64f, ka ); //
對pimgi
用高斯核濾波器濾波
//對每個通道分別進行濾波
for(i=0;i<4;i++)
for(i=0;i<4;i++)//
與原影象相加存入
pimgi
中cvadd(pimg[i],pimg2[i],pimg[i]); //
方向濾波器的構造
double l1[2] = ;
double l2[4]=;
double l3[2]=;
double l4[4]=;
/*cvmat lm1,lm2,lm3,lm4;
lm1 = cvmat( 1, 2, cv_64f, l1);
lm2 = cvmat( 2, 2, cv_64f, l2);
lm3 = cvmat( 2, 1, cv_64f, l3);
lm4 = cvmat( 2, 2, cv_64f, l4);*/
cvmat lm[4];
lm[0]=cvmat( 1, 2, cv_64f, l1);
lm[1]=cvmat( 2, 2, cv_64f, l2);
lm[2]=cvmat( 2, 1, cv_64f, l3);
lm[3]=cvmat( 2, 2, cv_64f, l4); //
用方向濾波器進行濾波,注意在這裡只能對一方向濾波
//for(i=0;i<4;i++)
//cvfilter2d( pimg[i], pimg[i], &lm1, cvpoint(-1,-1));
//for(i=0;i<4;i++)
//cvfilter2d( pimg[i], pimg[i], &lm2, cvpoint(-1,-1));
//for(i=0;i<4;i++)
//cvfilter2d( pimg[i], pimg[i], &lm3, cvpoint(-1,-1));
//for(i=0;i<4;i++)
//cvfilter2d( pimg[i], pimg[i], &lm4, cvpoint(-1,-1)); //
下面是對四個方向分別時行濾波
for(i=0;i<4;i++)
cvnamedwindow("image0", 1);
cvnamedwindow("image1", 1);
cvnamedwindow("image2", 1);
cvnamedwindow("image3",1);
cvshowimage("image0", pimg[0]);
cvshowimage("image1", pimg[1]);
cvshowimage("image2", pimg[2]);
cvshowimage("image3", pimg[3]);
cvwaitkey(0);
cvdestroyallwindows();
for(i=0;i<4;i++)
return 0; }
python 金字塔 Python金字塔
托倫,函式中有幾個小錯誤和乙個邏輯問題print y to a 請注意,此函式生成乙個以z開頭的字串,但您希望將字串以相反的方向連線,而您的另乙個函式print a to y 確實停止了 1位置 例如 還要注意,您需要新增新行字元 n 以獲得一些不錯的輸出。在 我的解決方案是 def print a...
字母金字塔(類同數字金字塔)
問題描述 讓程式要求使用者輸入乙個大寫字母,使用巢狀迴圈產生像下面這樣的金字塔圖案 aaba abcba abcdba abcdecba 演算法分析 每行包括三個部分內容 若干個空格 正序排列的字母 倒序排列的字幕。使用乙個外部迴圈來處理行,在每乙個行中使用三個內部迴圈 乙個處理空格,乙個以公升序列...
數字金字塔
觀察下面的數字金字塔。寫乙個程式來查詢從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以走到左下方的點也可以到達右下方的點。7 3 8 8 1 0 2 7 4 4 4 5 2 6 5在上面的樣例中,從7 到 3 到 8 到 7 到 5 的路徑產生了最大 多組輸入資料 第乙個行包含 r...