opencv方框内图像保存_opencv利用矩形框选中某一区域并保存为新图片
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下
一、基本原理
Mat img= imread(image);
Rect rect(50,20, 200, 50);
Mat ROI = img(rect);
imshow("ROI_WIN",ROI);
- 其中:Rect的函数定义为: Rect(_Tp _x, _Tp _y, _Tp _width, _Tp _height);_Tp _x:表示矩形左上角顶点的x坐标; _Tp _y:表示矩形左上角顶点的y坐标;
_Tp _width:表示矩形框的宽度 ; _Tp _height:表示矩形框的高度
二、具体使用
在一张图片中想手动通过鼠标绘制矩形框的方式来选择多个图片区域并逐一保存,其中主要包括以下几方面的实现:
响应鼠标点击事件,绘制矩形框
将矩形框中图片进行显示和保存,保存的文件名为ROI_i.jpg,其中i表示第i次绘制的矩形框。
具体实现代码如下:
#include
#include
#include
#include
using namespace cv;
using namespace std;
cv::Mat img;
bool select_flag = false;
cv::Rect m_select;
cv::Point origin;
int ROI_count;
void onMouseRectPicking(int event, int x, int y, int, void*)
{
if (select_flag)
{
m_select.x = MIN(origin.x, x);//不一定要等鼠标弹起才计算矩形框,而应该在鼠标按下开始到弹起这段时间实时计算所选矩形框
m_select.y = MIN(origin.y, y);
m_select.width = abs(x - origin.x);//算矩形宽度和高度
m_select.height = abs(y - origin.y);
m_select &= cv::Rect(0, 0, img.cols, img.rows);//保证所选矩形框在视频显示区域之内
}
if (event == CV_EVENT_LBUTTONDOWN)
{
select_flag = true; //鼠标按下的标志赋真值
origin = cv::Point(x, y); //保存下来单击捕捉到的点
m_select = cv::Rect(x, y, 0, 0); //这里一定要初始化,宽和高为(0,0)是因为在opencv中Rect矩形框类内的点是包含左上角那个点的,但是不含右下角那个点
}
else if (event == CV_EVENT_LBUTTONUP)
{
select_flag = false;
ROI_count++;
}
}
int main(int argc, char* argv[] )
{
img=imread("/home/drew/picture_cut/build/scenary.jpg");
bool stop = false;
cv::namedWindow("capframe", CV_WINDOW_AUTOSIZE);
cv::setMouseCallback("capframe", onMouseRectPicking, 0);
char pic_name[40];
ROI_count=0;
while(!stop)
{
img=imread("/home/drew/picture_cut/build/scenary.jpg");
cv::rectangle(img, m_select, cv::Scalar(255,0,0), 2, 8, 0); // 画矩形框
cv::imshow("capframe",img);
if((m_select.x!=0)&&(m_select.y!=0)&&(m_select.width!=0)&&(m_select.height!=0))
{
sprintf(pic_name,"ROI_%d.jpg",ROI_count);
Mat ROI = img(m_select);
imshow("ROI_WIN",ROI);
imwrite(pic_name,ROI);
}
char key = cv::waitKey(30);
if(key == 27)
stop = true;
}
waitKey(0);
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: opencv利用矩形框选中某一区域并保存为新图片
本文地址: http://www.cppcns.com/ruanjian/c/250301.html
opencv方框内图像保存_opencv利用矩形框选中某一区域并保存为新图片相关推荐
- opencv利用矩形框选中某一区域_【从零学习OpenCV】4Ubuntu系统中安装OpenCV 4
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分 ...
- opencv方框内图像保存_opencv::将两幅图像合并后,在同一个窗口显示;并将合并的图像流保存成视频文件...
/** * @file main-opencv.cpp * @date July 2014 * @brief An exemplative main file for the use of ViBe ...
- opencv方框内图像保存_opencv 图像滤波(均值,方框,高斯,中值)
为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作.信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没.因此一个能降低高频成分幅度的滤波 ...
- matlab中给图像加几个矩形框_在图像中画矩形框(matlab)
参考代码:https://github.com/cuijiaxun/FaceRecognitionByMatlab 中的LabelDetectWindow.m 在目标检测的时候,一般都需要用矩形框圈出 ...
- matlab中给图像加几个矩形框_没想到!PPT中的这个效果,用好了,简直就是渣图美化器...
相信大家一定看到过,透过磨砂玻璃呈现在眼前的景色,是不是有种朦胧美? 其实,在PPT中你也可以复刻出这样的效果.例如,这样的PPT页面: 把背景虚化掉,更加突出主题. 你想知道PPT中的磨砂效果,都是 ...
- html 保存草稿,利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱...
利用localStorage实现对ueditor编辑内容定时保存为草稿,ueditor草稿箱 直接看代码吧 1.引入ueditor和ueditor的使用我就不细说了 详情请戳http://blog.c ...
- 毛星云opencv之ROI图像叠加混合--5.2.1(定义ROI区域的方法)
关键代码: bool ROI_AddImage() { Mat srcImage1 = imread("C:/Users/离子键/source/repos/Project8/1.jp ...
- php下载提示保存,php利用header函数实现文件下载时直接提示保存_php技巧
下面是网上常用的方法 if (isset($link)) { Header("HTTP/1.1 303 See Other"); Header("Location: $l ...
- opencv之获取图片的width和height以及矩形框标注
获取图片的width和height imread函数读取一张图片时,其返回值为一个矩阵,矩阵的行数代表height,矩阵的列数代表width,不要搞混,也就是shape[0]代表height,shap ...
最新文章
- 百度开源,分布式配置中心
- 在AE10.1环境下调试其他版本的程序
- NeedforSpeed:SHIFT
- 锋利的JQuery学习笔记01
- Failed to create the Java Virtual Machine
- 字符指针(子串个数统计)
- 新安装和已安装nginx如何添加未编译安装模块/补丁
- 前端开发中使用mock模拟数据
- Visual Studio 2019 16.1 使用 .NET Core 3.0
- 如何对java分装,Angular4 JSONP + JAVA代码
- 前端学习(3188):ant-design的icon图标
- jacascript AJAX 学习
- 【hibernate merge】session1.merge(T entity)方法的含义和update方法的区别
- 关于Redis配置主从复制踩到的坑,主机不显示从机的连接信息
- FFmpeg简介及常见用法
- 【EF】EF框架 Code First Fluent API
- Android 虚拟多开系列二——技术原理
- 来自一个曾经200斤现在140斤程序员的减肥成功经验(包含个人认为相对安全的饮食法推荐)
- 腾讯北大合作的稀疏大模型训练加速方案HET入选国际顶会VLDB
- excel自动汇总多表格数据
热门文章
- windows 11预览版来了!
- 【PC工具】chrome浏览器插件vimium:传说上网可以不用鼠标。VIM入门工具,妈妈再也不用担心我学不会vim了...
- 通过MATLAB读取mnist数据库
- 如何使用通用Mapper
- 【RHCA翻译计划】EX436第一章:集群存储概论2
- RedHat Directory Server 8.2 Installation Guide
- 裁员纪实——联想不是我的家(转帖)
- winlogon.exe病毒的查杀方法
- PAT甲级1130 Infix Expression:[C++题解]中缀表达式、二叉树中序遍历、dfs
- 吴恩达机器学习Week4神经网络表述