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

opencv利用鼠標滑動畫出多彩的形狀

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

今天沒有繼續(xù)學(xué)習(xí)新知識點,畫出了一個隨鼠標畫出的 圖形,知識點全都是之前學(xué)的,話不多說,先上圖:

代碼部分: 

// opencvMouse.cpp : 定義控制臺應(yīng)用程序的入口點。
//
 
#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; //是否進行繪制
RNG rng(12345);
 
int main()
{
 //【1】準備參數(shù)
 Mat srcImage(600,800,CV_8UC3), tempImage;
 srcImage.copyTo(tempImage);
 g_rectangle = Rect(-1, -1, 0, 0);
 srcImage = Scalar::all(0);
 
 //【2】設(shè)置鼠標操作做回調(diào)函數(shù)
 namedWindow(WINDOW_NAME);
 setMouseCallback(WINDOW_NAME, on_MouseHandle, (void*)&srcImage);
 
 //【3】程序主循環(huán),當進程繪制的標識符為真時,進行繪制
 while (true)
 {
 srcImage.copyTo(tempImage); //復(fù)制源圖到臨時變量
 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)
 {
 //鼠標移動消息
 case EVENT_MOUSEMOVE:
 {
 if (g_bDrawingBox) //如果是否進行繪制的標識符為真,則記錄下長和寬到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); //記錄起始點
 }
 break;
 case EVENT_LBUTTONUP: //左鍵松開消息
 {
 g_bDrawingBox = false;
 //對寬和高小于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ù)進行繪制
 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))); //隨機顏色
}

里面就使用通過:

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

鼠標的操作來實現(xiàn)繪圖.

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

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

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

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

相關(guān)文章

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

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

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

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

    Vector是一個能夠存放任意類型的動態(tài)數(shù)組,有點類似數(shù)組,是一個連續(xù)地址空間。本文將用C++模擬實現(xiàn)vector,感興趣的小伙伴可以了解一下
    2022-08-08
  • C++面向?qū)ο笾惡蛯ο竽切┠悴恢赖募毠?jié)原理詳解

    C++面向?qū)ο笾惡蛯ο竽切┠悴恢赖募毠?jié)原理詳解

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

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

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

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

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

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

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

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

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

    C語言運算符的重載詳解

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

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

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

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

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

最新評論

萨嘎县| 神农架林区| 隆德县| 丰宁| 天峨县| 商都县| 浦县| 潞城市| 黄冈市| 涟源市| 象州县| 西藏| 阿巴嘎旗| 湖南省| 资中县| 太白县| 平塘县| 砚山县| 美姑县| 都匀市| 达孜县| 顺昌县| 时尚| 库尔勒市| 南宁市| 志丹县| 杭州市| 丰都县| 松江区| 靖州| 广宁县| 达尔| 隆化县| 环江| 禹城市| 中宁县| 凌海市| 永川市| 盐池县| 清原| 左云县|