Как я обрабатываю и зафиксированные и непойманные ошибки в подпрограмме Perl?

Первое изображение в 4-канальном формате RGBA с совершенно бессмысленным, полностью непрозрачным альфа-каналом, который вы можете игнорировать.

Второе изображение в 2-канальном формате Grey + Alpha, где все пиксели чисто черного цвета, а формы определены только в альфа-канале.

Итак, в основном вы хотите:

  • удалить последний канал первого изображения, что вы можете сделать, используя cv2.IMREAD_COLOR

  • [ 1110] отбросить все, кроме последнего канала второго изображения, что вы можете сделать следующим образом:

    im = cv2.imread('2.png',cv2.IMREAD_UNCHANGED)[:,:,-1]


Я получил информацию выше с помощью используя ImageMagick , который включен в большинство дистрибутивов Linux и доступен в macOS и Windows.

Команда, которую я использовал в Терминале:

magick identify -verbose 2.png

Пример вывода

Image: 2.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: DirectClass
  Geometry: 1040x1533+0+0
  Units: Undefined
  Colorspace: Gray
  Type: Bilevel
  Base type: Undefined
  Endianess: Undefined
  Depth: 8-bit
  Channel depth:
    Gray: 1-bit                     <--- Note 1
    Alpha: 8-bit                    <--- Note 1
  Channel statistics:
    Pixels: 1594320
    Gray:
      min: 0  (0)                   <--- Note 2
      max: 0 (0)                    <--- Note 2
      mean: 0 (0)
      standard deviation: 0 (0)
      kurtosis: -3
      skewness: 0
      entropy: 4.82164e-05
    Alpha:
      min: 0  (0)                   <--- Note 3
      max: 255 (1)                  <--- Note 3
      mean: 50.3212 (0.197338)
      standard deviation: 101.351 (0.397456)
      kurtosis: 0.316613
      skewness: 1.52096
      entropy: 0.0954769
    ...
    ...

Я пометил стрелками и примечаниями справа вверху. [ 1115]

Примечание 1: это говорит о том, что изображение серого цвета + альфа

Примечание 2: Это говорит о том, что все пиксели серого цвета черные, поскольку максимальное значение равно нулю, а минимальное равно нулю

Примечание 3: Это говорит мне о том, что есть некоторые полностью прозрачные пиксели и некоторые полностью непрозрачные пиксели

5
задан Community 23 May 2017 в 11:55
поделиться

2 ответа

Оценка блока может быть вложена:

sub function {
    eval {
        die "error that can be handled\n";
        1;
    } or do {
        #propagate the error if it isn't the one we expect
        die $@ unless $@ eq "error that can be handled\n"; 
        #handle the error
    };
    die "uncaught error";
}

eval { function(); 1 } or do {
    warn "caught error $@";
};
8
ответ дан 14 December 2019 в 04:48
поделиться

Я не абсолютно уверен, что Вы хотите сделать, но я думаю, что можно сделать это с обработчиком.

$SIG{__DIE__} = sub { print $@ } ;

eval{ function($param); 1 } or next;
0
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: