Opencv實(shí)現(xiàn)畫筆功能
更新時(shí)間:2020年08月19日 15:49:56 作者:軒落_翼
這篇文章主要為大家詳細(xì)介紹了Opencv實(shí)現(xiàn)畫筆功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Opencv實(shí)現(xiàn)畫筆功能的具體代碼,供大家參考,具體內(nèi)容如下
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
Rect g_rectangle;
bool g_bDrawing = false;
RNG g_rng(12345);
Point g_nCurrPoint;
int g_nThick = 0, g_nBlue = 255, g_nGreen = 255, g_nRed = 0;
/*注意:不能在毀掉函數(shù)中寫入未初始化的矩陣類,所以需要用時(shí),需要寫一個(gè)標(biāo)志位,然后再在while(1)循環(huán)內(nèi)使用*/
void onMouse(int event, int x, int y, int flag, void *param)
{
Mat &img = *(cv::Mat*)param;
switch (event)
{
//移動(dòng)鼠標(biāo)的時(shí)候
case CV_EVENT_MOUSEMOVE:
{
g_nCurrPoint = Point(x, y);
}
break;
//點(diǎn)擊鼠標(biāo)左鍵時(shí)
case CV_EVENT_LBUTTONDOWN:
{
g_bDrawing = true;
g_nCurrPoint = Point(x, y);
}
break;
//松開鼠標(biāo)左鍵時(shí)
case CV_EVENT_LBUTTONUP:
{
g_bDrawing = false;
}
break;
}
}
int main()
{
Mat srcImage(600, 800, CV_8UC3);
Mat tempImage;
srcImage.copyTo(tempImage);
srcImage = Scalar::all(0);
namedWindow("【鼠標(biāo)事件窗口】", 0);
setMouseCallback("【鼠標(biāo)事件窗口】", onMouse, (void *)&srcImage);
namedWindow("【滾動(dòng)條窗口】", 0);
createTrackbar("thick", "【滾動(dòng)條窗口】", &g_nThick, 100, 0);
createTrackbar("Blue", "【滾動(dòng)條窗口】", &g_nBlue, 255, 0);
createTrackbar("Green", "【滾動(dòng)條窗口】", &g_nGreen, 255, 0);
createTrackbar("Red", "【滾動(dòng)條窗口】", &g_nRed, 255, 0);
char key;
while (1)
{
if (g_bDrawing)
{
circle(srcImage, g_nCurrPoint, 0, Scalar(g_nBlue, g_nGreen, g_nRed), g_nThick + 1);
}
imshow("【鼠標(biāo)事件窗口】", srcImage);
key = waitKey(1);
if (key == 27)
break;
if (key == '1')
srcImage = Scalar::all(0);
/*DrawRectangle(srcImage, g_rectangle);
imshow(WINDOW_NAME, srcImage);
if (waitKey(10) == 27)
break;*/
}
return 0;
}
按1是清除畫面

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語言求矩陣主對(duì)角線元素及副對(duì)角線元素之和
這篇文章主要介紹了C語言求矩陣主對(duì)角線元素及副對(duì)角線元素之和實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
C語言實(shí)現(xiàn)兩個(gè)變量值交換的三種方式
兩個(gè)變量值的交換是編程中最常見的問題之一,以下將介紹三種變量的交換方式,其中第一種方式是最常用也是最實(shí)用的,后兩種方式一般只在特殊限制下使用,需要的朋友可以參考下2025-03-03
C++實(shí)現(xiàn)LeetCode(38.計(jì)數(shù)和讀法)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(38.計(jì)數(shù)和讀法),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

