MATLAB画框,并把框起来的保存

first.m

% ------------------
%        Matlab手动鼠标截图,获取兴趣区域
% ------------------
clc;
clear;
close all;

pathname = 'E:\first_idea\test\072\img_072_x4_our.png';
origin_img = imread(pathname);
figure;
imshow(origin_img,[]);
title('Original Image');
% 画图后,将鼠标变成十字架,用来选择兴趣区域
h = imrect;
% 拖动鼠标获得兴趣区域,pos有四个值,兴趣区域左上角的像素坐标和区域的长宽
position = getPosition(h);
%[x,y] = ginput(2);
[m, n, z] = size(origin_img);                                                     
start_y= floor(position(2));
start_x=floor(position(1));
rect_size_y=floor(position(3));
rect_size_x=floor(position(4));                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
s=draw_rect(origin_img, [start_y,start_x],[rect_size_y, rect_size_x], 3, [255, 0, 0]);
imwrite(s,'E:\first_idea\kuang\img_072_x4_our.png')

second.m

%strarr = ['bicubic.png';'CARN.png';'DRCN.png';'DRRN.png';'FSRCNN.png';'GT.png';'LapSRN.png';'our.png';'SRCNN.png';'VDSR.png';'ZHUKAI.png'];

pathname1 = ['E:\first_idea\test\072\img_072_x4_','ZHUKAI.png'];
origin_img = imread(pathname1);
ROI = imcrop(origin_img,position);
imwrite(ROI,['E:\first_idea\test\072\','ZHUKAI.png'],'png');


draw_rect.m

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==1
    dest(:, : ,1) = src;
    dest(:, : ,2) = src;
    dest(:, : ,3) = src;
else
    dest = src;
end

for channel_i = 1 : 3              
    for line_i = 1 : lineSize		% expand inside
	gain = line_i-1;
         dest(start_y+gain, (start_x+gain):(start_x+rect_size_w-gain),  channel_i ) =  color(channel_i);				%above
         dest(start_y+rect_size_h-gain,  (start_x+gain):(start_x+rect_size_w-gain), channel_i ) =  color(channel_i);	%bottom
         dest((start_y+gain):(start_y+rect_size_h-gain),  start_x+gain, channel_i ) =  color(channel_i);				%left
         dest((start_y+gain):(start_y+rect_size_h-gain),  start_x+rect_size_w-gain, channel_i ) =  color(channel_i);	%right

    end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值