답변1
Imagemagick 사용
그러면 이미지의 총 픽셀 수가 제공됩니다.
identify -verbose ~/www/pictures/ISTI-F.jpg | sed -n '/.*Pixels: /s///p'
이것은 기본 색상 이름과 픽셀 수를 제공합니다.
convert ~/www/pictures/ISTI-F.jpg -format "%c" histogram:info: | sort -nr -t: | head -1 | sed 's/\(.*\):.*#\(......\).*/\2\1/'
예:
$ identify -verbose ISTI-F.jpg | sed -n '/.*Pixels: /s///p'
1920000
$ convert ISTI-F.jpg -format "%c" histogram:info: | sort -nr -t: | head -1 | sed 's/\(.*\):.*#\(......\).*/\2\1/'
FFFFFF 1667711
이는 쉘 스크립트 작성의 기초로 사용할 수 있지만 Imagemagick은 매우 유연하지만 느리기 때문에 많은 파일을 검사하는 데는 좋지 않습니다.
옥타브 사용
다음 Octave 스크립트는 명령줄에서 직접 호출할 수 있습니다. 해당 매개변수는 두 개의 디렉터리 이름 errdir
과 baddir
이미지 파일 목록 이어야 합니다 . Octave에서 사용하는 LibMagick++ 라이브러리에서 경고 또는 오류를 제공하는 파일은 로 이동됩니다 errdir
. 동일한 색상의 줄의 마지막 25%는 baddir
다른 파일로 이동됩니다. 표준 출력은 간결한 보고서를 제공합니다.
파일을 이동하지 않고 보고만 해야 하는 경우 디렉터리 이름을 처음 두 인수로 전달하지 마세요.
#!/usr/bin/octave -qf
threshold = 0.25;
usage = "Usage is: badfiles <file...> OR badfiles <errdir> <baddir> <file...>\n";
files\n";
assert(nargin>0, usage);
dryrun = isfile(argv{1});
if !dryrun
errdir = argv{1};
baddir = argv{2};
assert(isfolder(errdir) && isfolder(baddir) && isfile(argv{3}), usage);
endif
start = 1 + 2*(!dryrun);
for fname = argv()(start:end)'
q = [];
f = fname{};
warning error
try
q = imread(fname{});
catch err
end_try_catch
warning on
if isempty(q)
printf("error\t");
dryrun || movefile(f, errdir);
else
qt = all(q == q(end,1,:) ,2);
qtt = squeeze(all(qt, 3));
r = 1 - find(qtt==0, 1, 'last') / size(q, 1);
if (r > threshold)
printf("bad--%02d\t", ceil(100*r));
dryrun || movefile(f, baddir);
else
printf("good-%02d\t", ceil(100*r));
endif
endif
disp(f);
endfor
이 기능이 작동하려면 Octave가 설치되어 있어야 합니다. 위의 내용을 이라는 파일에 복사하고 badimage
실행 가능하게 만든 다음 chmod +x badimage
아래와 같이 스크립트를 테스트합니다 ./badimage *.jpg
. 파일 목록과 해당 상태(양호, 불량, 오류)가 표시됩니다.
출력을 검토하고 스크립트 내에서 임계값을 변경하여 보다 공격적(낮은 임계값) 또는 보수적(높은 임계값) 동작을 달성할 수 있습니다. 이미지 파일 이름만 인수로 제공하면 파일을 이동하거나 변경하지 않으므로 원하는 경우 이를 테스트할 수 있습니다.
결과가 만족스러우면 두 개의 디렉터리를 만듭니다 mkdir errpics badpics
. 그런 다음 스크립트를 호출하면 ./badimage errpics badpics *.jpg
스크립트가 위에서 설명한 대로 파일을 디렉터리로 이동합니다.
참고: 이 스크립트를 사용한 후 삭제하기 전에 불량 또는 잘못된 것으로 표시된 이미지의 좋은 샘플을 확인하십시오!
잘못된 이미지를 감지하는 알고리즘은 사진에는 신뢰할 수 있지만 동일한 색상의 광범위한 법적 영역이 포함될 수 있는 그림, 로고, 차트, 그래프에는 반드시 그런 것은 아닙니다. 잘못된 파일은 LibMagick++의 관점에서 잘못되었거나 손상되었을 수 있지만 일반적으로 더 관대한 이미지 시각화 도우미에서는 읽을 수 있습니다.