找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 58582|回复: 21

[其他] [已解决]能把拉花的照片从众多照片里面剔出来吗?

[复制链接]
发表于 2023-7-11 13:55:51 | 显示全部楼层 |阅读模式
<a href="https://imgse.com/i/pCWQcjO"><img src="https://s1.ax1x.com/2023/07/11/pCWQcjO.md.jpg" alt="pCWQcjO.jpg" border="0" /></a>https://s1.ax1x.com/2023/07/11/pCWQcjO.jpg

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2023-7-11 14:01:11 | 显示全部楼层
如题,能不能处理这种照片,或者说从众多的照片里面把这些拉花的照片找出来
发表于 2023-7-11 20:47:32 | 显示全部楼层
本帖最后由 pd1 于 2023-7-11 20:49 编辑

需要多发几张有问题和没问题的图片做数据对比。
类似opencv这样的程序的来处理
 楼主| 发表于 2023-7-12 09:15:10 | 显示全部楼层
回复 3# pd1 <img src="https://pic.imgdb.cn/item/64adfe8b1ddac507cc7eabc4.jpg">
 楼主| 发表于 2023-7-12 09:15:37 | 显示全部楼层
回复 3# pd1 https://pic.imgdb.cn/item/64adfe8b1ddac507cc7eabc4.jpg
 楼主| 发表于 2023-7-12 09:16:11 | 显示全部楼层
回复 3# pd1 https://pic.imgdb.cn/item/64adfed11ddac507cc7f8f2f.jpg
 楼主| 发表于 2023-7-12 09:17:08 | 显示全部楼层
回复 3# pd1
发表于 2023-7-12 16:57:22 | 显示全部楼层
每一张花掉的地方颜色都不一样,不知道怎么搞
发表于 2023-7-12 19:58:30 | 显示全部楼层
回复 8# pd1


    虽然颜色不一样
但都是在下半部分有色块,颜色数量10左右吧
不知道能不能这样,只统计下半部分所有像素的颜色,按颜色占比来判断
 楼主| 发表于 2023-7-13 15:47:23 | 显示全部楼层
回复 8# pd1


    好吧
发表于 2023-7-14 10:24:18 | 显示全部楼层
实践一下应该可以找出花的图
  1. #@&cls&powershell "type '%~f0'|out-string|iex"&pause&exit
  2. Add-Type -AssemblyName System.Drawing
  3. $cp = New-Object CodeDom.Compiler.CompilerParameters
  4. $cp.ReferencedAssemblies.Add([Reflection.Assembly]::GetAssembly([Drawing.Image]).Location) >$null
  5. $cp.ReferencedAssemblies.Add([Reflection.Assembly]::GetAssembly([Linq.Enumerable]).Location) >$null
  6. $cp.CompilerOptions ='/unsafe'

  7. Add-Type -CompilerParameters $cp -TypeDefinition @'
  8. using System;
  9. using System.Drawing;
  10. using System.Drawing.Imaging;
  11. using System.Collections.Generic;
  12. using System.Linq;

  13. public class test
  14. {
  15.     unsafe public static int main(string f)
  16.     {
  17.         Bitmap bitmap = new Bitmap(@f);
  18.         int width = bitmap.Width;
  19.         int height = bitmap.Height;
  20.         int h = height/2;
  21.         BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, h, width, height-h), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
  22.         byte* p = (byte*)(IntPtr)bitmapData.Scan0;
  23.         Dictionary<int, int> b = new Dictionary<int, int>();
  24.         for (int i = 0; i < width * (height-h) * 4; i+=4)
  25.         {
  26.             int c = (p[i+3] << 24) | (p[i+2] << 16) | (p[i+1] << 8) | p[i];
  27.             b[c] = b.ContainsKey(c) ? b[c] + 1 : 1;
  28.         }
  29.         bitmap.UnlockBits(bitmapData);
  30.         var d = b.OrderBy(x => x.Value).Select(x => x.Value).ToArray();
  31.         return width*h/(d[d.Length-1]) < 30 ? 1 : 0;
  32.     }
  33. }
  34. '@

  35. dir *.jpg|%{if([test]::main($_.FullName)){$_.fullname}}
复制代码

评分

参与人数 1技术 +1 收起 理由
a475012621 + 1 感谢!

查看全部评分

 楼主| 发表于 2023-7-14 13:15:05 | 显示全部楼层
回复 11# idwma

测试能找出拉花的照片了,感谢
发表于 2023-7-14 15:03:36 | 显示全部楼层
发现纠错的图像都含有很多这样的数据:a28a2800
所以想着直接找出含有这些数据的文件,在busybox for windows里可用
  1. find . -iname "*.jpg" -exec sh -c 'xxd -p "{}" | grep -q "a28a2800"' \; -print
复制代码
 楼主| 发表于 2023-7-14 15:33:45 | 显示全部楼层
回复 13# wanghan519


    感谢
发表于 2023-7-14 15:48:39 | 显示全部楼层
回复 13# wanghan519


    你试试用系统自带的画图程序做一个矩形,填充为纯色,例如红色,另存为jpg文件,看看是否也包含这个十六进制串?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 17:07 , Processed in 0.017653 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表