科研必备之图像局部区域放大——画中画形式
科研必备之图像局部区域放大(Matlab或QT实现)
- Matlab版本
- QT版本(含界面)
在撰写图像处理领域相关的论文中通常需要将图片的某个小块进行放大,以便论文审稿者看到图像清晰的细节信息,本文主要使用matlab和QT(需要搭建opencv)来实现此种效果。
Matlab版本
function [ dest ] = draw_rect(src, startPosition, rectSize, lineSize, color)[start_y, start_x] = deal(startPosition(1),startPosition(2)); % start position
[rect_size_w, rect_size_h] = deal(rectSize(1),rectSize(2)); % Rect Size[width, height, channel] = size(src);
if channel==1dest(:, : ,1) = src;dest(:, : ,2) = src;dest(:, : ,3) = src;
elsedest = src;
endfor channel_i = 1 : 3 for line_i = 1 : lineSize % expand insidegain = line_i-1;dest(start_y+gain, (start_x+gain):(start_x+rect_size_w-gain), channel_i ) = color(channel_i); %abovedest(start_y+rect_size_h-gain, (start_x+gain):(start_x+rect_size_w-gain), channel_i ) = color(channel_i); %bottomdest((start_y+gain):(start_y+rect_size_h-gain), start_x+gain, channel_i ) = color(channel_i); %leftdest((start_y+gain):(start_y+rect_size_h-gain), start_x+rect_size_w-gain, channel_i ) = color(channel_i); %rightend
end
QT版本(含界面)
void MainWindow::on_pushButton_2_clicked()
{int start_h = 220, start_w = 180;int rectSize = 50, scaleSize=3;Rect rect1 = Rect(start_h, start_w, rectSize, rectSize); // specific rectMat srcImage = imread("/home/mark/Sofeware/Qt/Qt_Project/QtApplication2/QT_DrawRect/lena.png");Mat imageRect = srcImage;cvtColor(imageRect, imageRect, CV_BGR2RGB); // convert the BGR image to RGBMat image_ROI = imageRect(rect1); // define the ROI area and magnification ROI areaMat image_scaleROI;cv::resize(image_ROI, image_scaleROI, Size(scaleSize*rectSize, scaleSize*rectSize));Rect rect2 = Rect(imageRect.rows-image_scaleROI.rows, imageRect.cols-image_scaleROI.cols, // magnification rectimage_scaleROI.rows, image_scaleROI.cols);image_scaleROI.copyTo(imageRect(rect2)); // cover the scaled ROI arearectangle(imageRect, rect1, cvScalar(255,0,0),2); // draw two rectrectangle(imageRect, rect2, cvScalar(255,0,0),2);QImage image((const uchar*)imageRect.data, imageRect.cols, imageRect.rows, // show image in QlabelimageRect.cols*imageRect.channels(), QImage::Format_RGB888);QImage showImage = image.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);ui->label->setPixmap(QPixmap::fromImage(showImage));cvtColor(imageRect, imageRect, CV_RGB2BGR);imwrite("/home/mark/Sofeware/Qt/Qt_Project/QtApplication2/QT_DrawRect/output.png", imageRect);
}
最终应用两种方法得到的测试结果为:
完整的代码工程文件请前往github下载
https://github.com/RussellEven/Draw_Rect
转载须知:https://blog.csdn.net/weixin_39444746/article/details/88763550
科研必备之图像局部区域放大——画中画形式相关推荐
- 【Opencv系列】之显示图像以及使用鼠标截取图像局部区域进行放大
序 本文主要介绍通过Opencv显示一副图像,同时又可以使用鼠标左键框选局部区域且放大一倍: 1. 使用IplImage的示例代码 #include <stdio.h> #include ...
- 制作局部区域放大效果(每天一个PS小项目)
原图如下所示: 按住Ctrl点击通道中黑白放大镜,将放大镜选出来: 按Ctrl+C复制,点击猫的面板,按Ctrl+V粘贴: 按Ctrl+J复制一个背景,点击放大镜图层,按Ctrl+T更改尺寸: 选择椭 ...
- MATLAB绘制WRF模拟区域和局部的放大
MATLAB绘制WRF模拟区域和局部的放大 clc;clear;close all filename = 'ETOPO2v2g_f4.nc'; ncdisp(filename);% lon=doubl ...
- 视频局部区域的马赛克处理
在电视采访中,有时候一些采访对象不愿意抛头露面.这种情况下,被采访者可能会背对摄像镜头:但更通常的做法是,被采访者仍然面对镜头,而在电视节目播出时对采访对象的面部进行马赛克处理.这种马赛克处理,使观众 ...
- 基于C++和OpenCv的SIFT_图像局部特征检测算法代码的实现
SIFT:尺度不变特征变换匹配算法详解 本章将要讲解的内容如下所示: 1)SIFT算法的简介 2)SIFT算法的实现细节 3)SIFT算法的应用领域 4)SIFT算法的改进与扩 ...
- Python计算机视觉:第二章 图像局部描述符
第二章 图像局部描述符 2.1 Harris角点检测 2.1.2 在图像间寻找对应点 2.2 sift描述子 2.2.1 兴趣点 2.2.2 描述子 2.2.3 检测感兴趣点 2.2.4 描述子匹配 ...
- 图像局部显著性—点特征(SURF)
1999年的SIFT(ICCV 1999,并改进发表于IJCV 2004,本文描述):参考描述:图像特征点描述. 参考原文:SURF特征提取分析 本文有大量删除,如有疑义,请参考原文. SURF对SI ...
- 图像局部显著性—点特征(SIFT为例)
基于古老的Marr视觉理论,视觉识别和场景重建的基础即第一阶段为局部显著性探测.探测到的主要特征为直觉上可刺激底层视觉的局部显著性--特征点.特征线.特征块. SalientDetection 已经好 ...
- 判断图像局部过暗_数字图像处理(第五章)
图像复原技术可以很好的应用于图像去噪领域,系统的学习图像复原原理将有助于修复一些被噪声污染的图像,我曾经遇到过被摩尔纹污染的图像,当时不知道如何进行去噪,希望这一章的学习能够给我带来解决问题的新思路. ...
- python论文排版格式_一张图总结科研必备的软件清单,妈妈再也不用担心我的工作了...
好的工具可以让工作事半功倍,那么哪些软件有助于提高学习效率,促使成果尽快产出? 废话不多说,先上一张图,它归纳了科研必备软件工具,具体说明见下文. 1.入门配置三件套 Word, excel, ppt ...
最新文章
- 中国是恶意程序感染率最高的国家
- 解决Ubuntu终端编辑时上下左右变成ABCD问题
- poj 2201(RMQ+笛卡尔树)
- 使用Github(仓库管理)
- 计算机动画整个的发展历史,三维动画的发展史
- 3 上传分段_32式太极拳教材分段教学:【3】32式太极拳背向演示 .3/25.
- python对非it上班族有用吗_非专业人士学Python有用吗?
- 将一段区间的偶数分解为两个素数相加(Java)
- untubu安装mysql_简单操作阿里云untubu服务器并且配置LAMP环境
- 此男因为什么被送进医院?
- copy和strong的区别
- 计算机快速看图教程,CAD快速看图教程:CAD图纸测量方法集锦
- calico更换ip地址池-k8s
- html图片旋转3种方式—— CSS3 transform
- 数字与字符串,,,字符串与字符串之间比较大小
- 探索式测试解密——无探索,不测试!
- 游戏中的图像资源(位图与矢量图比较)
- RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is
- vue.draggable实现元素拖动效果
- 快速获取当天0点0分0秒(00:00:00),23点59分59秒(23:59:59)
热门文章
- 【手写源码-设计模式9】-装饰器模式-基于王者荣耀英雄-甄姬皮肤场景
- oracle建索引时报ora00955 名称已由现有对象使用,“ORA-00955: 名称已由现有对象使用” 这个错误是怎么回事?...
- google浏览器缓存文件在哪里
- PV、UV、IP是什么意思?你懂了吗?
- 升级LTS长期支持版|奇点云数据云平台发布DataSimba R3.8
- 翟菜花:以科创板的科技成色,错失联想是相当大的损失
- 联想微型计算机进入bios,联想如何进入bios界面的方法汇总
- java七牛云工具类_您应该知道的7个Java工具
- 摸鱼神器 Thief-Book
- 厦门大学信息学院夏令营经历