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 提供了 多...