資源簡介
使用 OpenCV 裝入一幅彩色圖像,并顯示該圖像。然后在源圖像
窗口中使用鼠標選取一個矩形區域(可通過兩次按下鼠標左鍵選取矩形的
兩個對角頂點來實現),并在結果圖像窗口中顯示源圖像中被選取的部分。
代碼片段和文件信息
#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)?)//鼠標左鍵按下時
{?
sprintf(temp“(%d%d)“xy);//格式化字符串
pre_pt?=?cvPoint(xy);//獲取當前點坐標值
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);//這句有沒有,就是單目標和多目標的問題
}
else?if(?(event?==?CV_EVENT_MOUSEMOVE)?&&?(flags?&?CV_EVENT_LBUTTONDOWN))
{//鼠標移動并且鼠標左鍵按下
sprintf(temp“(%d%d)“xy);//格式化字符串
cur_pt?=?cvPoint(xy);//獲取當前點坐標值
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復制到臨時圖像tmp上,用于實時顯示
}
else?if(?event?==?CV_EVENT_LBUTTONUP?)
{//鼠標左鍵彈起
sprintf(temp“(%d%d)“xy);//字體格式化
cur_pt?=?cvPoint(xy);//獲取當前點坐標值
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
- 上一篇:圖的建立與遍歷c++實現鄰接矩陣存儲
- 下一篇:mfc生成excel-pdf圖表
評論
共有 條評論