欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo)

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

本文實(shí)例為大家分享了Android九宮格圖片展示的具體代碼,供大家參考,具體內(nèi)容如下

鼠標(biāo)在圖像上框選目標(biāo):

1. 用到鼠標(biāo)回調(diào)函數(shù)

2. 回調(diào)函數(shù)里面分三部分

 (1)鼠標(biāo)按下左鍵

 (2)鼠標(biāo)按下的同時(shí)移動左鍵

 (3)鼠標(biāo)左鍵彈起

3. 圖像顯示的刷新

單目標(biāo):

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
 
IplImage* src = 0; 
IplImage* tmp = 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)",x,y);//格式化字符串
 pre_pt = cvPoint(x,y);//獲取當(dāng)前點(diǎn)坐標(biāo)值
 cvPutText(src,temp, pre_pt, &font, cvScalar(0,0, 0, 255));//在圖像是打印字符
 cvCircle( src, pre_pt, 2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );//在圖像上畫圓
 cvShowImage( "src", src );
 //cvCopy(src,tmp);//這句有沒有,就是單目標(biāo)和多目標(biāo)的問題 
 }
 else if( (event == CV_EVENT_MOUSEMOVE) && (flags & CV_EVENT_LBUTTONDOWN))
 {//鼠標(biāo)移動并且鼠標(biāo)左鍵按下
 sprintf(temp,"(%d,%d)",x,y);//格式化字符串
 cur_pt = cvPoint(x,y);//獲取當(dāng)前點(diǎn)坐標(biāo)值 
 cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));//在圖像是打印字符
 cvRectangle(src, pre_pt, cur_pt, cvScalar(0,255,0,0), 2, 8, 0 );//在圖像上畫矩形
 cvShowImage( "src", src );
 cvCopy(tmp,src);//將img復(fù)制到臨時(shí)圖像tmp上,用于實(shí)時(shí)顯示
 }
 else if( event == CV_EVENT_LBUTTONUP )
 {//鼠標(biāo)左鍵彈起
 sprintf(temp,"(%d,%d)",x,y);//字體格式化
 cur_pt = cvPoint(x,y);//獲取當(dāng)前點(diǎn)坐標(biāo)值 
 cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));//在圖像是打印字符
 cvCircle( src, cur_pt, 2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );//在圖像上畫圓
 cvRectangle( src, pre_pt, cur_pt, cvScalar(0,255,0,0), 2, 8, 0 );//在圖像上畫矩形
 cvShowImage( "src", src );
 }
}
int main()
{
 src=cvLoadImage("lena.jpg",1);//讀入圖像
 tmp=cvCloneImage(src);//復(fù)制圖像到臨時(shí)圖像上
 cvNamedWindow("src",1);//新建窗口
 cvSetMouseCallback( "src", on_mouse, 0 );//注冊鼠標(biāo)響應(yīng)回調(diào)函數(shù)
 
 cvShowImage("src",src);//顯示圖像
 cvWaitKey(0);//等待按鍵按下 
 cvDestroyAllWindows();//銷毀所有窗口
 cvReleaseImage(&src);//釋放圖像
 cvReleaseImage(&tmp);//釋放圖像
 return 0;
} 

 

多目標(biāo):

#include <cv.h>
#include <highgui.h>
#include <stdio.h>
 
IplImage* src = 0; 
IplImage* tmp = 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)",x,y);//格式化字符串
 pre_pt = cvPoint(x,y);//獲取當(dāng)前點(diǎn)坐標(biāo)值
 cvPutText(src,temp, pre_pt, &font, cvScalar(0,0, 0, 255));//在圖像是打印字符
 cvCircle( src, pre_pt, 2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );//在圖像上畫圓
 cvShowImage( "src", src );
 cvCopy(src,tmp);//這句有沒有,就是單目標(biāo)和多目標(biāo)的問題
 }
 else if( (event == CV_EVENT_MOUSEMOVE) && (flags & CV_EVENT_LBUTTONDOWN))
 {//鼠標(biāo)移動并且鼠標(biāo)左鍵按下
 sprintf(temp,"(%d,%d)",x,y);//格式化字符串
 cur_pt = cvPoint(x,y);//獲取當(dāng)前點(diǎn)坐標(biāo)值 
 cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));//在圖像是打印字符
 cvRectangle(src, pre_pt, cur_pt, cvScalar(0,255,0,0), 2, 8, 0 );//在圖像上畫矩形
 cvShowImage( "src", src );
 cvCopy(tmp,src);//將img復(fù)制到臨時(shí)圖像tmp上,用于實(shí)時(shí)顯示
 }
 else if( event == CV_EVENT_LBUTTONUP )
 {//鼠標(biāo)左鍵彈起
 sprintf(temp,"(%d,%d)",x,y);//字體格式化
 cur_pt = cvPoint(x,y);//獲取當(dāng)前點(diǎn)坐標(biāo)值 
 cvPutText(src,temp, cur_pt, &font, cvScalar(0,0, 0, 255));//在圖像是打印字符
 cvCircle( src, cur_pt, 2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );//在圖像上畫圓
 cvRectangle( src, pre_pt, cur_pt, cvScalar(0,255,0,0), 2, 8, 0 );//在圖像上畫矩形
 cvShowImage( "src", src );
 }
}
int main()
{
 src=cvLoadImage("lena.jpg",1);//讀入圖像
 tmp=cvCloneImage(src);//復(fù)制圖像到臨時(shí)圖像上
 cvNamedWindow("src",1);//新建窗口
 cvSetMouseCallback( "src", on_mouse, 0 );//注冊鼠標(biāo)響應(yīng)回調(diào)函數(shù)
 
 cvShowImage("src",src);//顯示圖像
 cvWaitKey(0);//等待按鍵按下 
 cvDestroyAllWindows();//銷毀所有窗口
 cvReleaseImage(&src);//釋放圖像
 cvReleaseImage(&tmp);//釋放圖像
 return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:c++初級并查集知識點(diǎn)總結(jié)

欄    目:C語言

下一篇:opencv如何識別圖片上帶顏色的圓

本文標(biāo)題:OpenCV實(shí)現(xiàn)鼠標(biāo)在圖像上框選單目標(biāo)和多目標(biāo)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/237.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有