今
天寫程式遇到了乙個問題,錯誤如下:
**如下:
switch(m_radio_contour)
;//建立開啟影象的副本,並開閉空間用來儲存處理後的結果
pimage=cvcloneimage(img);
pimg8u=cvcreateimage(cvgetsize(img),ipl_depth_8u,1);
pimg8usmooth=cvcreateimage(cvgetsize(img),ipl_depth_8u,1);
//rgb到gray的影象轉換
cvcvtcolor(pimage,pimg8u,cv_rgb2gray);
//影象的高斯濾波
cvsmooth(pimg8u,pimg8usmooth,cv_gaussian,3,0,0);
//建立位深為16位的新影象區域,因為sobel運算元要求影象的位深為16位、
pimgsobelgray=cvcreateimage(cvgetsize(pimage),ipl_depth_16s,1);
//計算一階x方向的影象差分
cvsobel(pimg8usmooth,pimgsobelgray,0,1,3);
cvconvertscaleabs(pimgsobelgray,pimg8u,1,0);
cvvnamedwindow("sobel gray image",1);
cvvshowimage("sobel gray image",pimg8u);
………………………………
看了一下網頁,是說這個case 語句可能沒有被執行到(執行其他case了)導致變數沒有初始化而導致接下來的錯誤,所以需要把變數放到switch前面宣告初始化,可是我又不想把初始化放在switch前面,還有乙個解決方法,在swith中定義內部變數加括號,就可以了。
switch(m_radio_contour)
;//建立開啟影象的副本,並開閉空間用來儲存處理後的結果
pimage=cvcloneimage(img);
pimg8u=cvcreateimage(cvgetsize(img),ipl_depth_8u,1);
pimg8usmooth=cvcreateimage(cvgetsize(img),ipl_depth_8u,1);
//rgb到gray的影象轉換
cvcvtcolor(pimage,pimg8u,cv_rgb2gray);
//影象的高斯濾波
cvsmooth(pimg8u,pimg8usmooth,cv_gaussian,3,0,0);
//建立位深為16位的新影象區域,因為sobel運算元要求影象的位深為16位、
pimgsobelgray=cvcreateimage(cvgetsize(pimage),ipl_depth_16s,1);
//計算一階x方向的影象差分
cvsobel(pimg8usmooth,pimgsobelgray,0,1,3);
cvconvertscaleabs(pimgsobelgray,pimg8u,1,0);
cvvnamedwindow("sobel gray image",1);
cvvshowimage("sobel gray image",pimg8u);
………………………………}
case 1:
至此,問題解決了。
變數初始化
int a 是變數定義,也就是說編譯器將為a分配儲存,這在編譯時被處理。int a 0 是定義 初始化,定義的分配儲存的action在編譯時完成,初始化的action則在執行時完成 將執行類似dword ptr ebp 4 0的指令,而單獨的int a 不會有對應的執行指令 定義是分配空間,而初始化...
變數的初始化
變數可以分為兩種,一種是方法內的區域性變數,另一種是類的成員變數 對於區域性變數,編譯器強制只有在初始化其值得時候才能使用,而成員變數會進行預設初始化。一 區域性變數必須先初始化後使用 public class test 二 成員變數的初始化 所有的成員變數 包括基本型別和類引用 其自動初始化是在剛...
變數的初始化
1.關於基本資料型別和引用資料型別初始化的值 package com.dbzhang.demo2 public class watersource public string tostring package com.dbzhang.demo2 public class sprinklersyste...