【图像处理】OpenCV截图小工具

2023-11-13

还存在一些小Bug,需要改进。

#include <istream>

#include <opencv2/opencv.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include  <sys/timeb.h>
/*
Demo 显示原始图片,然后鼠标切割获取截取图片
*/
using namespace std;
using namespace cv;
bool cutFlag = false;
bool drawRectFlag = false;
void listenMouse(int event, int x, int y, int flag, void* param);
void drawRect(cv::Mat& img, cv::Rect box);
Rect rect;
RNG c_rand(12345);
string winName_s;
int winIndex = 1;
int main()
{
	try
	{
		char * srcWinName = "window";
		Mat tempImg;
		rect = Rect(10, 10, 200, 200);
		//读取原始图片
		Mat srcImg = imread("E://OpenCV//OpenCV_Image//lenafull.jpg");
		//Mat srcImg(320, 568, CV_8UC3), tempImage;
		//namedWindow(srcWinName, 0);
		//resizeWindow(srcWinName, 320 , 568);
		//drawRect(srcImg , rect);
		//srcImg.copyTo(tempImg);
		imshow(srcWinName, srcImg);
		setMouseCallback(srcWinName, listenMouse, (void*)&srcImg);
		//tempImg = srcImg(rect);
		//imshow("win2", tempImg);
		waitKey(0);
	}
	catch (const std::exception& e)
	{
		cout << "Exception :: " << e.what() << endl;
	}
	return 0;
}

/*

* 鼠标回调方法

*/

void listenMouse(int event, int x, int y, int flag, void* param)
{
	Mat& image = *(cv::Mat*) param;
	Mat tempImg;
	image.copyTo(tempImg);
	switch (event)
	{
	case EVENT_MOUSEMOVE:
	{
		cout << "鼠标移动" << "x : " << x << "y : " << y << endl;
		if (cutFlag)
		{
			rect.width = x - rect.x;
			rect.height = y - rect.y;
		}
		if (drawRectFlag)
		{
			drawRect(tempImg, rect);
			imshow("window", tempImg);
		}
	}
	break;
	case EVENT_LBUTTONDOWN:
	{
		cout << "鼠标按下" << "x : " << x << "y : " << y << endl;
		cutFlag = true;
		drawRectFlag = true;
		rect = Rect(x, y, 0, 0);
	}
	break;


	case EVENT_LBUTTONUP:
	{
		cout << "Up" << "x : " << x << "y : " << y << endl;
		cutFlag = false;
		drawRectFlag = false;
		if (rect.width <= 0 || rect.height <= 0)
		{
			break;
		}
		if (rect.width <= 0)
		{
			rect.x += rect.width;
			rect.width *= -1;
		}
		if (rect.height <= 0)
		{
			rect.y += rect.height;
			rect.height *= -1;
		}
		//drawRect(image, rect);
		Mat cutTempImg = image(rect);
		imshow("window", image);
		imshow("window_" + to_string(winIndex), cutTempImg);
		winIndex++;
	}
	default:
		break;
	}
}


/*

* 画矩形

*/

void drawRect(cv::Mat& img, cv::Rect box)
{
	cout << "rectBox" << box << endl;
	rectangle(img, box.tl(), box.br(), Scalar(64, 64, 255));
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【图像处理】OpenCV截图小工具 的相关文章

  • 【数字图像处理】YUV420转RGB并BMP存储<纯C++实现>

    1 读取akiyo qcif yuv YUV420文件 xff0c 按帧读取 xff0c 转RGB xff0c 并存储到BMP文件 2 暂时实现读取一帧并存储一张BMP图片 若要读取YUV序列 xff0c 写成循环方式即可 3 生成的BMP
  • Matlab:尝试将 SCRIPT XXX 作为函数执行的解决方案

    Matlab 尝试将 SCRIPT XXX 作为函数执行的解决方案 最近在做图像处理小实验的过程中遇到了无比沙雕的情况 被自己佛了 最近真的智商不在线 或者没在线过 先描述一下问题 在Matlab中调用直方图均衡化函数histeq 但是出现
  • Matlab实现图像的比例缩放

    以灰度图像circuit tif为例 利用Matlab图像处理工具箱中的imresize函数对图像进行比例缩放变换 要求 创建4个figure窗口 不可以用subplot 显示不出来放大效果 分别用于显示原始图像 等比例放大1 5倍后的图像
  • 数字图像处理-python基于opencv代码实现 反转变换、对数变换和幂律(伽马)变换

    本文主要介绍对 数字图像处理 第三章书中示例图片实现 反转变换 对数变换以及伽马变换的代码 若要获取更多数字图像处理 python 深度学习 机器学习 计算机视觉等高清PDF以及 更多有意思的 分享 可搜一搜 微信公共号 分享猿 免费获取资
  • 数字图像处理-Matlab实现图像边缘检测

    1 边缘检测函数 1 1Sobel算子边缘检测 function OutImage SobelOperate InputImage Direction 功能 Sobel边缘检测 参数 InputImage为输入单通道图像 Dirction为
  • 对数及对比度拉伸变换

    对数及对比度拉伸变换 对数和对比度拉伸变换是 动态范围操作的基本工具 表达式 g c log 1 f 其中c是一个常数 f是浮点数 对数变换 应用 压缩动态范围 实现了图像灰度扩展和压缩功能 扩展低灰度值而压缩高灰度值 让图像的灰度分布更加
  • 计算二维离散随机变量的联合概率分布

    一 定义 Joint probability distribution 给定至少两个随机变量X Y 它们的联合概率分布 Joint probability distribution 指的是每一个随机变量的值落入特定范围或者离散点集合内的概率
  • 【图像处理】彩色图直方图统计

    首先要知道彩色图是没有直方图的 只能在rgb方向分别求直方图在合并一下 干脆不用这么麻烦 用rgb2gray转到灰度图 再在二维上进行直方图绘制 最后还提供了代码 找出直方图中横坐标 像素值 为50以下的纵坐标 以此为像素的个数 的和 cl
  • 数字图像处理:局部直方图处理(Local Histogram Processing)

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 在前面章节 数字图像处理 直方图均衡学习总结 感悟 数字图像直方图匹配或规定化Histogram Matching Specific
  • MATLAB—GUI新手入门教程

    GUI界面基本操作 1 GUI界面介绍 2 各个控件的使用方法 2 1 1 按钮 2 1 2 滑动条 2 1 3 文本框 2 1 4 单选框和复选框和切换按钮 2 1 5 弹出式菜单和列表框 2 1 6 按钮组 2 1 7 菜单编辑器 常见
  • Retinex理论及算法学习

    为了能够获取最大的信息量 达到更好的图像增强效果 了解人类视觉系统的特性和图像的属性是准确地选择图像增强方法的必备知识 一 人眼视觉系统 1 人眼成像 人的眼睛是一个非常复杂的器官 一般来说它就是一个球体 平均直径约为20mm 内壁是一层视
  • 一种简单快速有效的低照度图像增强方法

    一种简单快速有效的低照度图像增强方法 一 本文介绍的是一种比较实用并且去阴影效果很好的方法 选自2004年Tao的一篇论文 名称是 An Integrated Neighborhood Dependent Approach for Nonl
  • 一文了解视频编解码原理

    视频编解码算法分为传统算法和基于深度学习的方法 本文主要介绍视频编解码技术的原理 部分内容和图片参考网上技术博客 链接已放在文章末尾 一 基本术语 数字图像的定义及理解可以参考这篇文章 数字图像处理笔记 一文搞懂数字图像基础 颜色深度 存储
  • 基于Arnold变换的图像置乱-Matlab实现

    Arnold变换是俄国数学家VladimirI Arnold提出的一种变换 一幅M N的数字图像的二维Arnold 变换定义为 xn 1yn 1 1abab 1 xnyn mod N x n
  • 【图像处理】CvArr、Mat、CvMat、IplImage、BYTE转换

    一 Mat 类型 矩阵类型 Matrix 在openCV中 Mat是一个多维的密集数据数组 可以用来处理向量和矩阵 图像 直方图等等常见的多维数据 Mat有3个重要的方法 1 Mat mat imread const String file
  • 图像处理-双边滤波原理

    双边滤波 Bilateral filter 是一种可以去噪保边的滤波器 之所以可以达到此效果 是因为滤波器是由两个函数构成 一个函数是由几何空间距离决定滤波器系数 另一个由像素差值决定滤波器系数 原理示意图如下 双边滤波器中 输出像素的值依
  • 平滑滤波第二节,中值滤波法(数字图像处理大题复习 P4)

    文章目录 中值滤波 1 圈出模板像素 2 列出像素找到中值 3 填入结果 如果 不要滤波后就替换 中值滤波 1 圈出模板像素 我们先观察这个模板 这里圈出来了5个像素 那我们也在图像中对圈出5个像素 和均值滤波一样 第一个点的选取 2 列出
  • 【扫盲】机器学习图像处理中的深层/浅层、局部/全局特征

    浅层网络与深层网络浅层网络更注重于细节信息 深层网络更注重于语义信息 浅层网络 一般感受野较小 能够利用更多的细粒度特征信息 而且此时特征图每个像素点对应的感受野重叠区域还很小 这就保证了网络能够捕获更多细节 深层网络 随着下采样或卷积次数
  • 计算两幅图像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方图、互信息、Hash)& 代码实现 与举例

    MSE Mean Squared Error 均方误差 MSE公式 MSE 计算模型的预测 与真实标签 Y 的接近程度 公式表示为 对于两个m n的单通道图像I和K 它们的均方误差可定义为 优点 MSE的函数曲线光滑 连续 处处可导 便于使
  • 《数字图像处理》学习总结及感悟:第二章数字图像基础(5)数学工具

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 本系列文章记录老猿自学冈萨雷斯 数字图像处理 的感悟和总结 不过估计更新会比较慢 白天要工作 都是晚上抽空学习 学习完一章再回头总结

随机推荐

  • 基于Linux开发python项目

    在某些公司要求中 我们不会直接在Windows系统上做项目的开发 有时候会采用在linux系统上开发 而这分为两种情况 1 直接在本地搭建虚拟机 虚拟机上面装centos镜像 项目运行在本地虚拟机上 大部分原因都是项目的某些依赖包在Wind
  • 4 业务分析师

    在每个软件项目中 都有人在显式或隐式地扮演业务分析师 BA 的角色 业务分析师是能够在组织中促进变化的人 他们通过定义需求和向干系人推荐有价值的解决方案来促进这些变化 分析师获取和分析他人的观点 将收集到的信息转换为需求规范说明 并于其他干
  • 如何从无序链表中移除重复项--Java版

    题目描述 给定一个没有排序的链表 去掉其重复项 并保留原顺序 如链表1 gt 3 gt 1 gt 5 gt 5 gt 7 去掉重复项变为1 gt 3 gt 5 gt 7 方法一 顺序删除 思路 通过双重循环直接在链表上执行删除操作 外层循环
  • 对习乐app的某课程的所有题目爬取

    这学期就想把习乐题库刷空 一直没时间弄 期末来了 课少了 搞起来 习乐好像是一个一个学长写的app 但是对不住了 增加了点垃圾数据 23333 思路 1 手机或模拟器抓包 分析提交自测数据包 查看试卷数据包 2 模拟上面的数据包 3 清洗数
  • Linux下ntpdate时间同步

    原文地址 http gaoxingf blog 51cto com 612518 121959 作者 高兴F Linux下ntpdate时间同步 Ntp服务器安装配置 RedHat服务器可以下载rpm安装包 然后执行 rpm ivh ntp
  • Linux安装MySQL

    Linux安装MySQL 链接 MySQL官网9 7 18的下载 查看是否已经安装了mariadb 检查linux是否安装了mariadb数据库 mariadb数据库是mysql的分支 是免费开源的 mariadb和msyql会有冲突 首先
  • vue中用echart写饼状图

    用echart饼状图实现男女比例 效果图如下 实现代码如下
  • 静态代码扫描工具汇总

    一 概述 在软件开发过程中 开发团队往往要花费大量的时间和精力发现并修改代码缺陷 传统的代码评审 同事复审 通过人工方式来检查缺陷仍然是一件耗时耗力的事情 而静态代码扫描工具能够在代码构建过程中帮助开发人员快速 有效的定位代码缺陷并及时纠正
  • Qt 设置窗口背景图片的几种方法

    1 在paintEvent事件中绘制图片 void Widget paintEvent QPaintEvent ev QPainter painter this painter drawPixmap rect QPixmap bg jpg
  • k8s集群中部署微服务项目前端代理服务 Nginx

    k8s集群中部署微服务项目前端代理服务 Nginx 一 微服务项目静态资源准备 mkdir sangomall proxy cd sangomall proxy root k8s master01 sangomall proxy ls co
  • 记录开发遇到的问题

    这里写目录标题 一 React 1 ref和wrappedComponentRef使用区别 https blog csdn net weixin 38009285 article details 119420763 2 umi中其他页面跳转
  • ctfshow web 练习记录(1,2)

    web1 查看源代码 base64解码 web2 sql注入 使用万能公式username 1 or 1 1 passwd 123 有回显 再使用order by 查询列数 username 1 or 1 1 order by 1 到4没有
  • 国内访问github速度过慢的问题解决

    1 在浏览器上输入网址 http tool chinaz com dns 2 查询http github com 3 找到TTL值最低的响应IP 比如IP20 32 253 113的TTL值最低你就选这个IP 4 打开我的电脑 进入到C W
  • 粒子群算法组卷_CVRP问题求解(一)整数编码的粒子群算法

    CVRP问题求解 一 整数编码的粒子群算法 粒子群算法概述 粒子群算法 Particle Swarm Optimization 是由鸟群捕食得到启发的一种算法 在鸟类觅食过程中 每只鸟都会利用自身经验和群体信息来寻找食物 在觅食过程中 每只
  • 跳槽季到了,Linux运维跳槽40道面试精华题

    1 什么是运维 什么是游戏运维 1 运维是指大型组织已经建立好的网络软硬件的维护 就是要保证业务的上线与运作的正常 在他运转的过程中 对他进行维护 他集合了网络 系统 数据库 开发 安全 监控于一身的技术 运维又包括很多种 有DBA运维 网
  • C++寻找数组中的最大值

    include
  • OpenCV——高斯滤波

    目录 一 高斯滤波 二 C 代码 三 python代码 四 结果展示 1 原始图像 2 5x5卷积 3 9x9卷积 一 高斯滤波 高斯滤波是一种线性平滑滤波 适用于消除高斯噪声 广泛应用于图像处理的减噪过程 1 通俗的讲 高斯滤波就是对整幅
  • PC端页面适应不同的分辨率的方法

    上周完成一个PC端的项目 对于我这样的小白来说 这个项目里面最大的问题就是 如何做到让HTML页面适应电脑的不同分辨率 通过师傅的指导和自己查阅资料 最终成功适配不同的分辨率 完成了这个项目 现在回头再来看这个项目 突然发现适配不同的分辨率
  • js弹出窗口总结6种弹窗方法

    关闭 父窗口弹出对话框 子窗口直接关闭 this Response Write 关闭 父窗口和子窗口都不弹出对话框 直接关闭 this Response Write 弹出窗口刷新当前页面width 200 height 200菜单 菜单栏
  • 【图像处理】OpenCV截图小工具

    还存在一些小Bug 需要改进 include