#haskell #image-processing
#haskell #обработка изображений
Вопрос:
Привет всем, я новичок в Haskell, я хочу прочитать и извлечь матрицу пикселей (чисел) из изображения bmp в оттенках серого в haskell, у кого-нибудь есть идея, как это сделать, я искал в Интернете, не найдя никаких подсказок, спасибо
Комментарии:
1. Серьезно? Есть много-много вопросов о загрузке изображений в Haskell. Если этот вопрос в основном касается того, как получить изображение в каком-то конкретном формате матрицы, то вам следует а) уточнить, в каком формате матрицы и б) в целом рассказать о том, что вы пробовали, продемонстрировать, что не сработало достаточно хорошо, когда вы просто следовали инструкциям по другому вопросу и т.д. и т.п..
Ответ №1:
К сожалению, существует не так много руководств по этой теме, как должно быть, но это, по крайней мере, не так сложно, как может показаться на первый взгляд. Как указал @leftaroundabout, первое, что вам нужно, это определиться с библиотекой, которую вы хотите использовать для обработки матриц. Я лично рекомендовал massiv
бы для манипулирования массивами, а massiv-io
также для чтения и записи изображений. Вы не указали, что именно вы хотите сделать с изображением, поэтому все, что я собираюсь предоставить в этом примере, — это считывание bmp-изображения в массив, печать некоторых сведений о матрице и запись его в формате jpg:
module Main where
import Data.Massiv.Array as A
import Data.Massiv.Array.IO
main :: IO ()
main = do
img <- readImage "frog.bmp" :: IO (Image S SRGB Word8)
putStrLn $ "Size: " show (size img)
putStrLn $ "Pixel at <row:10, col:20>: " show (img ! (10 :. 20))
writeImageAuto "frog.jpg" img
Затем, если вы сохраните этот фрагмент в файл с именем convert-bmp.hs
, поместите frog.bmp
изображение рядом с ним, а затем, используя stack
:
$ stack --resolver lts-16.25 runghc --package massiv --package massiv-io convert-bmp.hs
Size: Sz (200 :. 320)
Pixel at <row:10, col:20>: <SRGB:( 61, 64, 35)>
Комментарии:
1. спасибо за ваш отзыв, извините за недостаток информации, у меня есть цифровые изображения bmp в оттенках серого, и я пытаюсь превратить матрицу, которую я получаю из растрового изображения после того, как прочитал ее, в вектор, чтобы обучить свою нейронную сеть. Я пробовал это с помощью Repa, но это работает ` x <- readImageFromBMP «../dat/img0.bmp» возвращает значение в ячейке x `. но это не работает