資源簡(jiǎn)介
使用 OpenCV 裝入一幅彩色圖像,并顯示該圖像。然后在源圖像
窗口中使用鼠標(biāo)選取一個(gè)矩形區(qū)域(可通過兩次按下鼠標(biāo)左鍵選取矩形的
兩個(gè)對(duì)角頂點(diǎn)來實(shí)現(xiàn)),并在結(jié)果圖像窗口中顯示源圖像中被選取的部分。
代碼片段和文件信息
#include?
#include?
#include?
?
IplImage*?src?=?0;?
IplImage*?tmp?=?0;?
IplImage*?tmp1?=?0;
IplImage*?org?=?0;
void?on_mouse(?int?event?int?x?int?y?int?flags?void*?ustc)
{
static?CvPoint?pre_pt?=?{-1-1};
static?CvPoint?cur_pt?=?{-1-1};
CvFont?font;
cvInitFont(&font?CV_FONT_HERSHEY_SIMPLEX?0.5?0.5?0?1?CV_AA);//初始化字體
char?temp[16];
if(?(event?==?CV_EVENT_LBUTTONDOWN)&&(flags)?)//鼠標(biāo)左鍵按下時(shí)
{?
sprintf(temp“(%d%d)“xy);//格式化字符串
pre_pt?=?cvPoint(xy);//獲取當(dāng)前點(diǎn)坐標(biāo)值
cvPutText(srctemp?pre_pt?&font?cvScalar(00?0?255));//在圖像是打印字符
cvCircle(?src?pre_pt?2cvScalar(255000)?CV_FILLED?CV_AA?0?);//在圖像上畫圓
cvShowImage(?“src“?src?);
//cvCopy(srctmp);//這句有沒有,就是單目標(biāo)和多目標(biāo)的問題
}
else?if(?(event?==?CV_EVENT_MOUSEMOVE)?&&?(flags?&?CV_EVENT_LBUTTONDOWN))
{//鼠標(biāo)移動(dòng)并且鼠標(biāo)左鍵按下
sprintf(temp“(%d%d)“xy);//格式化字符串
cur_pt?=?cvPoint(xy);//獲取當(dāng)前點(diǎn)坐標(biāo)值
cvPutText(srctemp?cur_pt?&font?cvScalar(00?0?255));//在圖像是打印字符
cvRectangle(src?pre_pt?cur_pt?cvScalar(025500)?2?8?0?);//在圖像上畫矩形
cvShowImage(?“src“?src?);
cvCopy(tmpsrc);//將img復(fù)制到臨時(shí)圖像tmp上,用于實(shí)時(shí)顯示
}
else?if(?event?==?CV_EVENT_LBUTTONUP?)
{//鼠標(biāo)左鍵彈起
sprintf(temp“(%d%d)“xy);//字體格式化
cur_pt?=?cvPoint(xy);//獲取當(dāng)前點(diǎn)坐標(biāo)值
cvPutText(srctemp?cur_pt?&font?cvScalar(00?0?255));//在圖像是打印字符
cvCircle(?src?cur_pt?2cvScalar(255000)?CV_FILLED?CV_AA?0?);//在圖像上畫圓
cvRectangle(?src?pre_pt?cur_pt?cvScalar(025500)?2?8?0?);//在圖像上畫矩形
cvShowImage(?“src“?src?);
?
/******************************************************************/
int?width=abs(pre_pt.x-cur_p
評(píng)論
共有 條評(píng)論