haskell - Haskell 从 bmp Image 获取矩阵
问题描述
大家好 我是 Haskell 的初学者 我想从 Haskell 中的灰度 bmp 图像中读取和提取像素(数字)矩阵 任何人都知道如何做到这一点 我在网上搜索但没有找到任何线索 谢谢
解决方案
不幸的是,关于这个主题的教程没有应有的那么多,但至少没有最初看起来那么难。正如@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)>
推荐阅读
- angular - Passport-Azure-AD 未从 MSAL Angular 身份验证验证 access_token
- python - Yolov4 权重转换为 tflite 失败
- python - 以不同角度跨 Contourf 图切片以获得 2D 线图
- c++ - 整数的 C++ 占位符值
- java - Java, Sockets, UTF-8, 我看不懂格式
- oracle - 报错:ORA-06502: PL/SQL: numeric or value error: string buffer too small APEX
- java - 将泛型参数传递给方法时,Java 编译器生成不兼容错误
- javascript - 在一定范围内离开元素后如何保持悬停属性处于活动状态?
- teradata - SET SESSION DATEFORM = ANSIDATE 似乎在 BTEQ 中不起作用
- amazon-web-services - 无服务器框架 - 尝试填充非字符串值错误