亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)文章

  • C++實(shí)現(xiàn)Huffman的編解碼

    C++實(shí)現(xiàn)Huffman的編解碼

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)Huffman的編解碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • QT通過(guò)C++線程池運(yùn)行Lambda自定義函數(shù)流程詳解

    QT通過(guò)C++線程池運(yùn)行Lambda自定義函數(shù)流程詳解

    最近在接觸公司的一個(gè)QT桌面項(xiàng)目,其中里面有一個(gè)模塊是使用線程池去運(yùn)行自定義函數(shù)的,自己潛心研究那個(gè)線程池代碼一天,發(fā)現(xiàn)研究不透,看不懂,里面幾乎都是使用C++11的新特性進(jìn)行編寫(xiě)
    2022-10-10
  • 聊聊c++數(shù)組名稱(chēng)和sizeof的問(wèn)題

    聊聊c++數(shù)組名稱(chēng)和sizeof的問(wèn)題

    這篇文章主要介紹了c++數(shù)組名稱(chēng)和sizeof,介紹了一維數(shù)組名稱(chēng)的用途及二維數(shù)組數(shù)組名,通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • C++實(shí)現(xiàn)通訊錄小功能

    C++實(shí)現(xiàn)通訊錄小功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的定義與實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之隊(duì)列的定義與實(shí)現(xiàn)

    隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(head)進(jìn)行刪除操作,而在表的后端(tail)進(jìn)行插入操作。本文將詳細(xì)講講C語(yǔ)言中隊(duì)列的定義與實(shí)現(xiàn),感興趣的可以了解一下
    2022-07-07
  • udp socket客戶(hù)端和udp服務(wù)端程序示例分享

    udp socket客戶(hù)端和udp服務(wù)端程序示例分享

    這篇文章主要介紹了udp socket客戶(hù)端和udp服務(wù)端程序示例,需要的朋友可以參考下
    2014-03-03
  • opencv實(shí)現(xiàn)圖形輪廓檢測(cè)

    opencv實(shí)現(xiàn)圖形輪廓檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)圖形輪廓檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • C/C++編譯器GCC下的常用編譯命令總結(jié)

    C/C++編譯器GCC下的常用編譯命令總結(jié)

    這篇文章主要介紹了C/C++編譯器GCC下的常用編譯命令總結(jié),本文的示例環(huán)境為L(zhǎng)inux系統(tǒng),需要的朋友可以參考下
    2015-08-08
  • C++如何調(diào)用matlab函數(shù)

    C++如何調(diào)用matlab函數(shù)

    這篇文章主要介紹了C++如何調(diào)用matlab函數(shù)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測(cè)

    OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)圖像角點(diǎn)檢測(cè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論