欢迎浏览本博客
大家好,我是:我菜就爱学一名刚刚入行的小白
从事方向:计算机视觉
我菜就爱学,分享有误,欢迎大佬指出
本篇介绍:继上次发博客已经断更一个月,时间有点长。主要是在学习深度学习,笔记都做在平板上,网上也有许多其他大佬,就不更新了。接下来准备看论文,也会每周更新自己对所看论文的学习。
使用Matlab对两个文件中的图片去重,这个我看网上也没有人写。或许有python了,不过我开一个先例了
思路: 利用两个图片的像素和的差,然后对比,若是像素小于某个值,就认为两个图片是相似的,否则就是不相识的。
代码如下:
clear
file_path1 = 'F:\DataShu\Data\NoMark\';% 图像文件夹路径
img_path_list1 = dir(strcat(file_path1,'*.jpg'));
img_num1=length(img_path_list1);
file_path2 = 'F:\DataShu\Data\pig_data\';% 图像文件夹路径
img_path_list2 = dir(strcat(file_path2,'*.jpg'));
img_num2=length(img_path_list2);
if img_num2 > 0%有满足条件的图像
for j = 1:img_num1 %逐一读取图像
image_name1 = img_path_list1(j).name;% 图像名
image1 = imread(strcat(file_path1,image_name1));
%图像处理过程 省略
flag=0
for k=1:img_num2
%fprintf("正在处理ceshi中的第 %d 张图片与第 %d 张图片对比\n",j,k);
image_name2 = img_path_list2(k).name;% 图像名
image2 = imread(strcat(file_path2,image_name2));
a=rgb2gray(image1);
b=rgb2gray(image2);
sum_a=sum(abs(sum(a)));
sum_b=sum(abs(sum(b)));
if abs(sum_a-sum_b)<100
%fprintf("两张图片的像素差:%d\n",abs(sum_a-sum_b));
flag=1
break;
end
%imwrite(image1,strcat('F:\ceshi3\'),'jpg');
end
if flag==0
fprintf("保存的图片是:%s\n",image_name1);
imwrite(image1,image_name1);
end
end
end
最终的效果还是不错的,就是耽误时间(这个用实验室电脑,连夜跑就完了)。大佬们看到了也可以优化。