将上边问题的代码进行整合
时间: 2024-03-02 15:51:53 浏览: 13
好的,这里是整合后的代码,你可以根据自己的需求进行修改和优化:
```
% 加载水稻种子图像
img = imread('rice_seeds.jpg');
gray_img = rgb2gray(img);
% 二值化处理
bw_img = imbinarize(gray_img);
% 形态学运算
se = strel('disk', 5);
bw_img = imclose(bw_img, se);
bw_img = imfill(bw_img, 'holes');
bw_img = bwareaopen(bw_img, 50);
% 标记并计数水稻种子
[labeled_img, num] = bwlabel(bw_img);
% 画出相近的水稻种子的框
props = regionprops(labeled_img, 'Centroid', 'Area');
centers = cat(1, props.Centroid);
areas = cat(1, props.Area);
distances = pdist2(centers, centers);
threshold = 50; % 相近的水稻种子的距离阈值
group_idx = arrayfun(@(x)find(distances(x,:) < threshold), 1:size(distances,1), 'UniformOutput', false);
for i = 1:length(group_idx)
group_centers = centers(group_idx{i},:);
group_box = [min(group_centers(:,1))-10, min(group_centers(:,2))-10, max(group_centers(:,1))-min(group_centers(:,1))+20, max(group_centers(:,2))-min(group_centers(:,2))+20];
rectangle('Position', group_box, 'EdgeColor', 'r', 'LineWidth', 2);
end
% 计算两个框之间的距离
box_centers = [group_box(:,1)+group_box(:,3)/2, group_box(:,2)+group_box(:,4)/2];
box_distances = pdist(box_centers);
% 将处理后的图像保存到一个专门的文件夹
imwrite(labeled_img, 'output_folder/output_image.jpg');
% 汇总处理后的信息成表格
results_table = table(props.Centroid(:,1), props.Centroid(:,2), areas, 'VariableNames', {'X', 'Y', 'Area'});
writetable(results_table, 'output_folder/results_table.csv');
```