java画笔功能,Opencv实现画笔功能

本文通过实例代码展示了如何利用OpenCV库在C++中创建一个简单的画笔应用,包括鼠标事件处理、颜色和线条粗细的设置,以及清除画面的功能。用户可以通过鼠标左键点击并移动来绘制,按下'1'键可以清空画布。
摘要由CSDN通过智能技术生成

本文实例为大家分享了opencv实现画笔功能的具体代码,供大家参考,具体内容如下

#include

#include

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;

/*注意:不能在毁掉函数中写入未初始化的矩阵类,所以需要用时,需要写一个标志位,然后再在while(1)循环内使用*/

void onmouse(int event, int x, int y, int flag, void *param)

{

mat &img = *(cv::mat*)param;

switch (event)

{

//移动鼠标的时候

case cv_event_mousemove:

{

g_ncurrpoint = point(x, y);

}

break;

//点击鼠标左键时

case cv_event_lbuttondown:

{

g_bdrawing = true;

g_ncurrpoint = point(x, y);

}

break;

//松开鼠标左键时

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("【鼠标事件窗口】", 0);

setmousecallback("【鼠标事件窗口】", onmouse, (void *)&srcimage);

namedwindow("【滚动条窗口】", 0);

createtrackbar("thick", "【滚动条窗口】", &g_nthick, 100, 0);

createtrackbar("blue", "【滚动条窗口】", &g_nblue, 255, 0);

createtrackbar("green", "【滚动条窗口】", &g_ngreen, 255, 0);

createtrackbar("red", "【滚动条窗口】", &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("【鼠标事件窗口】", 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是清除画面

71821e0d2f3ef5c2630d5c8a474d5d36.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值