opencv图像处理之鼠标事件(矩形roi绘图)
2017-01-22 22:31
471 查看
为满足图像处理要求,博主写此简易代码有如下作用:
1、根据感兴趣区域做深度学习标签;
2、提取感兴趣区域进行目标跟踪;
3、对感兴趣区域进行进一步操作。
具体代码如下:
效果图如下:
处理前:
处理后:
任何问题请加唯一QQ2258205918(名称samylee)!
1、根据感兴趣区域做深度学习标签;
2、提取感兴趣区域进行目标跟踪;
3、对感兴趣区域进行进一步操作。
具体代码如下:
//Author: samylee //Contact email: ahuljx@126.com #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <stdio.h> using namespace cv; Mat org, dst, img, tmp; void on_mouse(int event, int x, int y, int flags, void *ustc) { static Point pre_pt = (-1, -1); static Point cur_pt = (-1, -1); if (event == CV_EVENT_LBUTTONDOWN) { org.copyTo(img); pre_pt = Point(x, y); } else if (event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON))//摁下左键,flags为1 { img.copyTo(tmp); cur_pt = Point(x, y); rectangle(tmp, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0); imshow("img", tmp); } else if (event == CV_EVENT_LBUTTONUP) { org.copyTo(img); cur_pt = Point(x, y); rectangle(img, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0); imshow("img", img); img.copyTo(tmp); int width = abs(pre_pt.x - cur_pt.x); int height = abs(pre_pt.y - cur_pt.y); if (width == 0 || height == 0) { return; } dst = org(Rect(min(cur_pt.x, pre_pt.x), min(cur_pt.y, pre_pt.y), width, height)); namedWindow("dst"); imshow("dst", dst); } } void main() { org = imread("desktop.jpg"); org.copyTo(img); namedWindow("img"); setMouseCallback("img", on_mouse, 0); imshow("img", img); waitKey(0); }
效果图如下:
处理前:
处理后:
任何问题请加唯一QQ2258205918(名称samylee)!
相关文章推荐
- [置顶][置顶]opencv图像处理4--opencv下鼠标事件
- [置顶][置顶]opencv图像处理4--opencv下鼠标事件
- OPENCV图像处理基础(五)鼠标事件画个框
- 【OpenCV3图像处理】绘图功能总结(直线,矩形,圆,椭圆,多边形,文字)
- Opencv图像识别从零到精通(13)----点线圆矩形与鼠标事件
- OpenCV学习笔记(18):在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- OpenCV鼠标绘制矩形和截取图像的矩形区域
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
- opencv-- 使用鼠标绘制矩形并截取和保存矩形区域图像
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- opencv2对图像运用鼠标事件
- OpenCV中文网站例程——鼠标绘图,图像修复
- Opencv下图像对鼠标事件的响应
- C# 图像处理:实现鼠标选择矩形截图
- Opencv下图像对鼠标事件的响应
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
- OpenCV利用鼠标进行矩形ROI选取
- OpenCV之鼠标和键盘事件处理
- OpenCV图像处理->鼠标移动区域放大
- Opencv鼠标事件下的ROI