《學習OpenCV》課後習題解答6

2021-07-11 22:51:12 字數 2244 閱讀 7919

題目:(p104)

使用cvcmp()建立乙個掩碼。載入乙個真實的影象。使用cvsplit()將影象分割成紅,綠,藍三個單通道影象。

a.找到並顯示綠圖。

b.轉殖這個綠圖兩次(分別命名為clone1和clone2)。

c.求出這個綠色平面的最大值和最小值。

d.將clone1的所有元素賦值為theash=(unsigned char)((最大值-最小值)/2.0)。

e.將clone2的所有元素複製為0,然後呼叫函式cvcmp(green_image,clone1,clone2,cv_cmp_ge)。現在clone2將是乙個標識綠圖中值超過thresh的掩碼影象。

f.最後,使用cvsubs(green_image,thresh/2,green_image,clone2)函式並顯示結果。

解答:

#include 

#include

int main(int argc, const

char** argv)

iplimage* rimg = cvcreateimage(cvgetsize(srcimg), srcimg->depth, 1);

iplimage* gimg = cvcreateimage(cvgetsize(srcimg), srcimg->depth, 1);

iplimage* bimg = cvcreateimage(cvgetsize(srcimg), srcimg->depth, 1); //建立單通道r,g,b影象

iplimage* clone1 = cvcreateimage(cvgetsize(srcimg), srcimg->depth, 1);

iplimage* clone2 = cvcreateimage(cvgetsize(srcimg), srcimg->depth, 1);

double green_maxpixel = 0;

double green_minpixel = 0; //綠色平面最大最小值

double thresh; //閾值thresh

cvsplit(srcimg, rimg, gimg, bimg, 0); //拆分3通道

//-------------------a小題 ------------------

cvnamedwindow("greenimage0");

cvshowimage("greenimage0", gimg);

//-------------------b小題---------------------

cvcopy(gimg, clone1);

cvcopy(gimg, clone2); //copy the gimg to clone1 and clone2

//-----------------c小題求綠色平面最大最小值-----------------

cvminmaxloc(gimg, &green_maxpixel, &green_minpixel);

//-------------------d小題-------------------------------

thresh = (unsigned

char)(green_maxpixel - green_minpixel) / 2.0;

cvset(clone1, cvscalar(thresh));

//----------------------e小題-----------------------

cvzero(clone2);

cvcmp(gimg, clone1, clone2, cv_cmp_ge);

//---------------------------f小題-------------------

cvsubs(gimg, cvscalar(thresh / 2), gimg, clone2);

cvnamedwindow("greenimage1");

cvshowimage("greenimage1", gimg);

cvwaitkey(0);

cvreleaseimage(&srcimg);

cvreleaseimage(&rimg);

cvreleaseimage(&gimg);

cvreleaseimage(&bimg);

cvdestroywindow("greenimage0");

cvdestroywindow("greenimage1");

return

0;}

《學習OpenCV》課後習題解答7

題目 p105 建立乙個結構,結構中包含乙個整數,乙個cvpoint和乙個 cvrect 稱結構體為 my struct a.寫兩個函式 void write my strct cvfilestorage fs,const char name,my struct ms 和 void read my ...

Accelerated C 習題解答 第6章

部分解答參考了網上已有解答 ex.6 1 include include include include include using namespace std string size type width constvector v vectorframe constvector v ret.pu...

python程式設計快速上手之課後習題解答

略 建立regex物件時,為什麼常用原始字串?使用原始字串r,表示式較為簡潔,如果不加r,則需要寫成re.compile d 來匹配多個數字 search 方法返回什麼?search返回乙個match物件,使用match物件的group方法,返回實際匹配的文字分組 通過match物件,如何獲得匹配該...