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

opencv利用鼠標(biāo)滑動(dòng)畫(huà)出多彩的形狀

 更新時(shí)間:2020年08月19日 15:47:19   作者:比卡丘不皮  
這篇文章主要為大家詳細(xì)介紹了opencv利用鼠標(biāo)滑動(dòng)畫(huà)出多彩的形狀,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

今天沒(méi)有繼續(xù)學(xué)習(xí)新知識(shí)點(diǎn),畫(huà)出了一個(gè)隨鼠標(biāo)畫(huà)出的 圖形,知識(shí)點(diǎn)全都是之前學(xué)的,話(huà)不多說(shuō),先上圖:

代碼部分: 

// opencvMouse.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
 
#include "stdafx.h"
#include <iostream>
#include <opencv2/opencv.hpp>
 
using namespace cv;
using namespace std;
 
#define WINDOW_NAME "【窗口程序】"
 
void on_MouseHandle(int event,int x, int y, int flages, void * param);
void DrawRectangle(cv::Mat & img, cv::Rect box);
 
//全局變量
Rect g_rectangle;
bool g_bDrawingBox = false; //是否進(jìn)行繪制
RNG rng(12345);
 
int main()
{
 //【1】準(zhǔn)備參數(shù)
 Mat srcImage(600,800,CV_8UC3), tempImage;
 srcImage.copyTo(tempImage);
 g_rectangle = Rect(-1, -1, 0, 0);
 srcImage = Scalar::all(0);
 
 //【2】設(shè)置鼠標(biāo)操作做回調(diào)函數(shù)
 namedWindow(WINDOW_NAME);
 setMouseCallback(WINDOW_NAME, on_MouseHandle, (void*)&srcImage);
 
 //【3】程序主循環(huán),當(dāng)進(jìn)程繪制的標(biāo)識(shí)符為真時(shí),進(jìn)行繪制
 while (true)
 {
 srcImage.copyTo(tempImage); //復(fù)制源圖到臨時(shí)變量
 if (g_bDrawingBox)
 {
 DrawRectangle(tempImage, g_rectangle);
 }
 imshow(WINDOW_NAME, tempImage);
 if (waitKey(10) == 27) //按下ESC建,程序退出
 {
 break;
 }
 }
 return 0;
}
 
void on_MouseHandle(int event, int x, int y, int flages, void * param)
{
 Mat & image = *(cv::Mat*)param;
 switch (event)
 {
 //鼠標(biāo)移動(dòng)消息
 case EVENT_MOUSEMOVE:
 {
 if (g_bDrawingBox) //如果是否進(jìn)行繪制的標(biāo)識(shí)符為真,則記錄下長(zhǎng)和寬到RECT型變量中
 {
 g_rectangle.width = x - g_rectangle.x;
 g_rectangle.height = y - g_rectangle.y;
 }
 break;
 }
 case EVENT_LBUTTONDOWN: //按左鍵消息
 {
 g_bDrawingBox = true;
 g_rectangle = Rect(x,y,0,0); //記錄起始點(diǎn)
 }
 break;
 case EVENT_LBUTTONUP: //左鍵松開(kāi)消息
 {
 g_bDrawingBox = false;
 //對(duì)寬和高小于0的處理
 if (g_rectangle.width < 0)
 {
 g_rectangle.x += g_rectangle.width;
 g_rectangle.width *= -1;
 }
 if (g_rectangle.height < 0)
 {
 g_rectangle.y += g_rectangle.height;
 g_rectangle.height *= -1;
 }
 //調(diào)用函數(shù)進(jìn)行繪制
 DrawRectangle(image, g_rectangle);
 }
 break;
 }
}
 
void DrawRectangle(cv::Mat & img, cv::Rect box)
{
 rectangle(img, box.tl(), box.br(), Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255))); //隨機(jī)顏色
}

里面就使用通過(guò):

setMouseCallback(WINDOW_NAME, on_MouseHandle, (void*)&srcImage);

鼠標(biāo)的操作來(lái)實(shí)現(xiàn)繪圖.

第一個(gè)參數(shù): const string& 類(lèi)型為winname,窗口的名字

第二個(gè)參數(shù):MouseCallBack類(lèi)型的onMouse,指定窗口里每次鼠標(biāo)時(shí)間發(fā)生的時(shí)候調(diào)用的函數(shù)指針

第三個(gè)參數(shù): void*  用戶(hù)定義的傳遞到回調(diào)函數(shù)的參數(shù),默認(rèn)為0

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

相關(guān)文章

  • Unreal學(xué)習(xí)之簡(jiǎn)單三角形的繪制詳解

    Unreal學(xué)習(xí)之簡(jiǎn)單三角形的繪制詳解

    之所以寫(xiě)這個(gè)繪制簡(jiǎn)單三角形的實(shí)例其實(shí)是想知道如何在Unreal中通過(guò)代碼繪制自定義Mesh,如果你會(huì)繪制一個(gè)三角形,那么自然就會(huì)繪制復(fù)雜的Mesh了。所以這是很多圖形工作者的第一課,快跟隨小編一起學(xué)習(xí)起來(lái)吧
    2023-02-02
  • C++模擬實(shí)現(xiàn)vector的示例代碼

    C++模擬實(shí)現(xiàn)vector的示例代碼

    Vector是一個(gè)能夠存放任意類(lèi)型的動(dòng)態(tài)數(shù)組,有點(diǎn)類(lèi)似數(shù)組,是一個(gè)連續(xù)地址空間。本文將用C++模擬實(shí)現(xiàn)vector,感興趣的小伙伴可以了解一下
    2022-08-08
  • C++面向?qū)ο笾?lèi)和對(duì)象那些你不知道的細(xì)節(jié)原理詳解

    C++面向?qū)ο笾?lèi)和對(duì)象那些你不知道的細(xì)節(jié)原理詳解

    C++是面向?qū)ο缶幊痰?這也是C++與C語(yǔ)言的最大區(qū)別,下面這篇文章主要給大家介紹了關(guān)于C++面向?qū)ο笾?lèi)和對(duì)象的細(xì)節(jié)原理的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • c++實(shí)現(xiàn)堆排序的示例代碼

    c++實(shí)現(xiàn)堆排序的示例代碼

    本文主要介紹了c++實(shí)現(xiàn)堆排序的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C++實(shí)現(xiàn)逆波蘭式

    C++實(shí)現(xiàn)逆波蘭式

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)逆波蘭式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++深入分析數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形態(tài)

    C++深入分析數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形態(tài)

    使用編程語(yǔ)言進(jìn)行編程時(shí),需要用到各種變量來(lái)存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類(lèi)型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類(lèi)型,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2023-01-01
  • C++靜態(tài)鏈接與動(dòng)態(tài)鏈接詳解

    C++靜態(tài)鏈接與動(dòng)態(tài)鏈接詳解

    下面小編就為大家介紹C++靜態(tài)鏈接與動(dòng)態(tài)鏈接。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-10-10
  • C語(yǔ)言運(yùn)算符的重載詳解

    C語(yǔ)言運(yùn)算符的重載詳解

    這篇文章主要為大家詳細(xì)介紹C語(yǔ)言運(yùn)算符的重載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 老程序員教你一天時(shí)間完成C++俄羅斯方塊游戲

    老程序員教你一天時(shí)間完成C++俄羅斯方塊游戲

    俄羅斯方塊游戲大家應(yīng)該非常熟悉,非常經(jīng)典的一款游戲,本文來(lái)詳細(xì)講解下俄羅斯方塊游戲的制作過(guò)程,趕緊來(lái)看下吧!希望能給你帶來(lái)幫助
    2021-08-08
  • 深入淺析 C++ 調(diào)用 Python 模塊

    深入淺析 C++ 調(diào)用 Python 模塊

    Python 提供了 C++ 庫(kù),使得開(kāi)發(fā)者能很方便地從 C++ 程序中調(diào)用 Python 模塊。接下來(lái)通過(guò)本文給大家介紹 C++ 調(diào)用 Python 模塊的相關(guān)知識(shí),需要的朋友參考下吧
    2016-03-03

最新評(píng)論

延吉市| 永靖县| 丹巴县| 泸西县| 凌云县| 博爱县| 红原县| 西青区| 大港区| 呼图壁县| 桃源县| 苍山县| 鹤岗市| 丰台区| 马龙县| 杭州市| 景谷| 博白县| 云和县| 无极县| 镇宁| 宾阳县| 武隆县| 延寿县| 天全县| 恭城| 皋兰县| 吴江市| 徐汇区| 镇雄县| 克什克腾旗| 若羌县| 大姚县| 平凉市| 锦州市| 广德县| 普格县| 华池县| 基隆市| 来安县| 徐州市|