《學習OpenCV》練習題第四章第三題b

2022-08-09 00:42:19 字數 4313 閱讀 3469

1 #include 2 #include 3 #include "

opencv_libs.h"4

5/*6*《學習opencv》第四章第三題b78

*/910/*

矩形框

*/11

cvrect rect;

1213

bool draw = false; //

標記是否在畫

1415 iplimage*img;

16 iplimage *temp;

17 iplimage *original;

1819

bool draw_hist = false;20

21 iplimage* gethistimage(iplimage* image, cvhistogram*image_hist,

22cvsize image_size, cvscalar value)

2345

46return

dst;47}

4849

void draw_rect(iplimage*img, cvrect rect)50;

85float* ranges =;

86//

建立直方圖

87 cvhistogram * r_hist = cvcreatehist( 1, &size, cv_hist_array, ranges, 1

);88 cvhistogram * g_hist = cvcreatehist( 1, &size, cv_hist_array, ranges, 1

);89 cvhistogram * b_hist = cvcreatehist( 1, &size, cv_hist_array, ranges, 1

);90 cvhistogram * gray_hist = cvcreatehist( 1, &size, cv_hist_array, ranges, 1

);91

92//

直方圖尺寸

93 cvsize image_size = cvsize( 400, 300

);94

95 iplimage* r_dst = gethistimage(r_img, r_hist, image_size, cvscalar(0x00, 0x00, 0xff

));96 iplimage* g_dst = gethistimage(g_img, g_hist, image_size, cvscalar(0x00, 0xff, 0x00

));97 iplimage* b_dst = gethistimage(b_img, b_hist, image_size, cvscalar(0xff, 0x00, 0x00

));98 iplimage* gray_dst = gethistimage( gray_img, gray_hist, image_size, cvscalar(0

) );

99100

//把四個直方圖在一幅上顯示出來

101 iplimage* dst = cvcreateimage( cvsize( image_size.width * 2, image_size.height * 2), 8, 3

);102

cvsetzero( dst );

103//

拷貝紅色分量直方圖

104 cvrect r_rect = cvrect( 0, 0

, image_size.width, image_size.height);

105cvsetimageroi(dst, r_rect);

106cvcopy( r_dst, dst);

107//

拷貝綠色分量直方圖

108 cvrect g_rect = cvrect(image_size.width, 0

, image_size.width, image_size.height );

109cvsetimageroi( dst, g_rect);

110cvcopy( g_dst, dst);

111//

藍色分量

112 cvrect b_rect = cvrect(0

, image_size.height, image_size.width, image_size.height );

113cvsetimageroi(dst, b_rect);

114cvcopy( b_dst, dst );

115//

灰度分量

116 cvrect gray_rect =cvrect( image_size.width, image_size.height,

117image_size.width, image_size.height );

118cvsetimageroi( dst, gray_rect);

119cvcopy( gray_dst, dst);

120121

cvresetimageroi( dst );

122123 cvshowimage( "

src"

, src_rect);

124 cvshowimage( "

dst"

, dst );

125126 cvwaitkey(0

);127

128cvdestroyallwindows();

129 cvreleaseimage( &r_img );

130 cvreleaseimage(&g_img);

131 cvreleaseimage(&b_img);

132 cvreleaseimage(&gray_img);

133 cvreleaseimage(&r_dst);

134 cvreleaseimage(&g_dst);

135 cvreleaseimage(&b_dst);

136 cvreleaseimage(&gray_dst);

137 cvreleaseimage(&src_rect);

138 cvreleaseimage(&dst);

139}

140141

//滑鼠**函式

142void my_mouse_callback( int

event, int x, int y, int flags, void*param)

143155

156 draw_hist = false

;157

}158

break

;159

case

cv_event_lbuttondown:

160165

break

;166

case

cv_event_lbuttonup:

167175

if(rect.height < 0

)176

180//

draw

181draw_rect(image, rect);

182}

183break

;184

//在右鍵按下時清除

185case

cv_event_rbuttondown:

186cvcopyimage(original, img);

187 printf("

clear.\n");

188break

;189

}190

}191

192int

main()

193213

214 cvshowimage( "

draw rect

", temp);

215216

if(cvwaitkey(15) == 27

)217

break

;218

}219 cvreleaseimage(&img);

220 cvreleaseimage(&temp);

221cvdestroyallwindows();

222223

return0;

224 }

執行結果:

不足:在源影象上用滑鼠選擇矩形區域的時候,無法實時地在影象上反映出來。

Lua程式設計練習題第四章

lua 語言中的字串是不可變值,但可以建立乙個新字串 的方式來達到修改的目的。字串長度獲取 str abcd print str 4 print string.len str 4連線兩個字串 可以使用連線操作符 兩個點 來進行字串連線 如果運算元中存在數值,那麼lua 語言會先把數值轉換成字串 he...

第四章習題

一。填空題 1 基 派生 2 單繼承 多繼承 3 私有繼承方式 4 公有 保護 5 多繼承 6 支配原則 7 解決二義性 8 使用作用域運算子 引進虛基類 二。選擇題 1 5 b cd abc c a 6 10 c b d ad a 三。判斷題 f t f t f f 四。簡答題 1.在物件導向技術...

第四章 習題

一 填空題 1 如類果類a繼承了b,那麼類a被稱為 基類,而類b被稱為 派生類。2 c 的兩種繼承為 單繼承和 多繼承。3 在預設情況下的繼承方式為 私有繼承方式 4 從基類中公有派生乙個類時,基類的公有成員就成為派生類的 公有 成員,而這個基類的保護成員就成為派生類的 保護成員。5 c 提供了 多...