最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年08月10日 10:44:30   作者:yanglong890124  
這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)鼠標在圖像上框選單目標和多目標,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了OpenCV實現(xiàn)鼠標框選并顯示框選區(qū)域的具體代碼,供大家參考,具體內(nèi)容如下

鼠標在圖像上框選目標:

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

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

 (1)鼠標按下左鍵

 (2)鼠標按下的同時移動左鍵

 (3)鼠標左鍵彈起

3. 圖像顯示的刷新

單目標:

#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) )//鼠標左鍵按下時
 {
 sprintf(temp,"(%d,%d)",x,y);//格式化字符串
 pre_pt = cvPoint(x,y);//獲取當前點坐標值
 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);//這句有沒有,就是單目標和多目標的問題 
 }
 else if( (event == CV_EVENT_MOUSEMOVE) && (flags & CV_EVENT_LBUTTONDOWN))
 {//鼠標移動并且鼠標左鍵按下
 sprintf(temp,"(%d,%d)",x,y);//格式化字符串
 cur_pt = cvPoint(x,y);//獲取當前點坐標值 
 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ù)制到臨時圖像tmp上,用于實時顯示
 }
 else if( event == CV_EVENT_LBUTTONUP )
 {//鼠標左鍵彈起
 sprintf(temp,"(%d,%d)",x,y);//字體格式化
 cur_pt = cvPoint(x,y);//獲取當前點坐標值 
 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ù)制圖像到臨時圖像上
 cvNamedWindow("src",1);//新建窗口
 cvSetMouseCallback( "src", on_mouse, 0 );//注冊鼠標響應(yīng)回調(diào)函數(shù)
 
 cvShowImage("src",src);//顯示圖像
 cvWaitKey(0);//等待按鍵按下 
 cvDestroyAllWindows();//銷毀所有窗口
 cvReleaseImage(&src);//釋放圖像
 cvReleaseImage(&tmp);//釋放圖像
 return 0;
} 

 

多目標:

#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) )//鼠標左鍵按下時
 {
 sprintf(temp,"(%d,%d)",x,y);//格式化字符串
 pre_pt = cvPoint(x,y);//獲取當前點坐標值
 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);//這句有沒有,就是單目標和多目標的問題
 }
 else if( (event == CV_EVENT_MOUSEMOVE) && (flags & CV_EVENT_LBUTTONDOWN))
 {//鼠標移動并且鼠標左鍵按下
 sprintf(temp,"(%d,%d)",x,y);//格式化字符串
 cur_pt = cvPoint(x,y);//獲取當前點坐標值 
 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ù)制到臨時圖像tmp上,用于實時顯示
 }
 else if( event == CV_EVENT_LBUTTONUP )
 {//鼠標左鍵彈起
 sprintf(temp,"(%d,%d)",x,y);//字體格式化
 cur_pt = cvPoint(x,y);//獲取當前點坐標值 
 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ù)制圖像到臨時圖像上
 cvNamedWindow("src",1);//新建窗口
 cvSetMouseCallback( "src", on_mouse, 0 );//注冊鼠標響應(yīng)回調(diào)函數(shù)
 
 cvShowImage("src",src);//顯示圖像
 cvWaitKey(0);//等待按鍵按下 
 cvDestroyAllWindows();//銷毀所有窗口
 cvReleaseImage(&src);//釋放圖像
 cvReleaseImage(&tmp);//釋放圖像
 return 0;
}

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

相關(guān)文章

  • 關(guān)于C語言中E-R圖的詳解

    關(guān)于C語言中E-R圖的詳解

    今天小編就為大家分享一篇關(guān)于關(guān)于C語言中E-R圖的詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 必須知道的C語言八大排序算法(收藏)

    必須知道的C語言八大排序算法(收藏)

    這篇文章主要介紹了C語言八大排序算法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-10-10
  • C語言實現(xiàn)輸入一個字符串后打印出該字符串中字符的所有排列

    C語言實現(xiàn)輸入一個字符串后打印出該字符串中字符的所有排列

    這篇文章主要介紹了C語言實現(xiàn)輸入一個字符串后打印出該字符串中字符的所有排列的方法,是數(shù)學(xué)中非常實用的排列算法,需要的朋友可以參考下
    2014-09-09
  • Qt使用QListWidget實現(xiàn)自定義Item

    Qt使用QListWidget實現(xiàn)自定義Item

    這篇文章主要為大家詳細介紹了Qt如何使用QListWidget實現(xiàn)自定義Item的效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • C語言實現(xiàn)外賣管理系統(tǒng)

    C語言實現(xiàn)外賣管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)外賣管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++中使用哈希表(unordered_map)的一些常用操作方法

    C++中使用哈希表(unordered_map)的一些常用操作方法

    C++標準庫中使用的unordered_map底層實現(xiàn)是哈希表,下面這篇文章主要給大家介紹了關(guān)于C++中使用哈希表(unordered_map)的一些常用操作方法,需要的朋友可以參考下
    2022-03-03
  • 基于對話框程序中讓對話框捕獲WM_KEYDOWN消息的實現(xiàn)方法

    基于對話框程序中讓對話框捕獲WM_KEYDOWN消息的實現(xiàn)方法

    下面我們將通過程序給大家演示基于對話框的應(yīng)用程序?qū)M_KEYDOWN消息的捕獲。需要的朋友可以參考下
    2013-05-05
  • C/C++?判斷計算機存儲器字節(jié)序(端序)的幾種方式

    C/C++?判斷計算機存儲器字節(jié)序(端序)的幾種方式

    字節(jié)序是計算機存儲數(shù)據(jù)的格式,主存儲器(主存)的字節(jié)序?qū)Τ绦虻囊浦残院图嫒菪灾陵P(guān)重要,利用聯(lián)合體、指針、位移和掩碼等方法可以檢測和處理字節(jié)序問題,對于內(nèi)存數(shù)據(jù)操作重要,也關(guān)系到跨平臺和網(wǎng)絡(luò)通信的數(shù)據(jù)處理
    2024-10-10
  • c++ 端口掃描程序?qū)崿F(xiàn)案例

    c++ 端口掃描程序?qū)崿F(xiàn)案例

    下面小編就為大家?guī)硪黄猚++ 端口掃描程序?qū)崿F(xiàn)案例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 解析鴻蒙輕內(nèi)核靜態(tài)內(nèi)存的使用

    解析鴻蒙輕內(nèi)核靜態(tài)內(nèi)存的使用

    摘要:靜態(tài)內(nèi)存實質(zhì)上是一個靜態(tài)數(shù)組,靜態(tài)內(nèi)存池內(nèi)的塊大小在初始化時設(shè)定,初始化后塊大小不可變更。靜態(tài)內(nèi)存池由一個控制塊和若干相同大小的內(nèi)存塊構(gòu)成??刂茐K位于內(nèi)存池頭部,用于內(nèi)存塊管理。內(nèi)存塊的申請和釋放以塊大小為粒度
    2021-06-06

最新評論

民权县| 青田县| 福泉市| 沙洋县| 隆昌县| 宝坻区| 德清县| 绵阳市| 利川市| 沅陵县| 麻城市| 沾化县| 永丰县| 炉霍县| 雅江县| 永修县| 山东省| 织金县| 北碚区| 鲁山县| 砀山县| 奈曼旗| 乃东县| 凯里市| 龙游县| 都昌县| 天水市| 洮南市| 左权县| 彭山县| 朝阳县| 兴宁市| 禹城市| 神木县| 乐至县| 安徽省| 斗六市| 栾川县| 沽源县| 平阴县| 甘孜县|