matlab - 根据对象边界框裁剪旋转图像 - Matlab
问题描述
为什么我不能根据对象(喷射)边界框裁剪旋转的图像,有没有更有效的方法呢?基于上一个问题:图像单一背景颜色 - Matlab
代码:
close all;
clear;
clc;
url='http://www.clker.com/cliparts/T/i/o/c/X/Q/airplane-md.png';
rgbImage = imread(url);
I = rgb2gray(rgbImage);
BI = imbinarize(I);
LI = bwlabel(BI);
mea = regionprops(LI, 'Orientation');
RI = imrotate(rgbImage, -mea(1).Orientation,'loose');
imshow(RI);
% Replace all black pixels with white
inds = sum(RI,3)==0;
RI_new = RI;
RI_new(repmat(inds,1,1,3))=255;
imshow(RI_new);
title('RI new');
% Crop rotated image
RI_newGray = rgb2gray(RI_new);
BI_newGray = imbinarize(RI_newGray);
LI_new = bwlabel(BI_newGray);
LI_new= bwareaopen(LI_new, 50);
bbmea = regionprops(LI_new, 'BoundingBox');
rect = bbmea.BoundingBox;
RI_newGray = imcrop(RI_new, rect);
imshow(RI_newGray);
title('crop RI new');
解决方案
推荐阅读
- docker - 在 Hyperledger Fabric 上部署链码失败
- django - 在页面视图中找不到 Django 图像,但在发布请求后保存
- mongodb - 使用聚合和查找 mongodb 从对象数组中获取最小值
- python - 在 Python Tkinter 的 Tksheet 小部件中设置单个列标题/回滚相同的更改
- vb.net - 在 vb.net 中对列表视图进行排序
- flutter - 如何在 Flutter 中的另一个小部件下对齐小部件?
- android - Android 应用程序如何将 Progressive Web 应用程序添加到 Android 启动器桌面?
- javascript - 被 CORS 政策阻止:反应 js 应用程序问题。爱讯
- c# - 使用 .Net Core API 防止缓存
- javascript - 如何在计算器中获取单击按钮的值