gpt4 book ai didi

haskell - 索引使用 repa-devil 读取的图像

转载 作者:行者123 更新时间:2023-12-02 13:39:43 26 4
gpt4 key购买 nike

我正在尝试检查图像中像素的 RGB 分量,但我不知道该怎么做。

import Data.Array.Repa
import Data.Array.Repa.IO.DevIL
import Data.Word (Word8)

main = do
(RGB ps) <- runIL $ readImage "test.jpeg"
let k = (Z :. 142) :. 212 :. 0 :: DIM3
print $ ps ! k

我得到的错误是:

[1 of 1] Compiling Main             ( amy.hs, interpreted )

amy.hs:8:15:
Couldn't match expected type `Array r0 DIM3 a0'
with actual type `repa-3.2.3.1:Data.Array.Repa.Base.Array
repa-3.2.3.1:Data.Array.Repa.Repr.ForeignPtr.F
repa-3.2.3.1:Data.Array.Repa.Index.DIM3
Word8'
In the first argument of `(!)', namely `ps'
In the second argument of `($)', namely `ps ! k'
In a stmt of a 'do' block: print $ ps ! k
Failed, modules loaded: none.

首先,我不明白这个消息。看起来编译器需要一个Array some DIM3 some,结果得到一个Array F DIM3 Word8。为什么这些类型不匹配?我读过Repa Tutorial在 Haskell wiki 上,但我仍然不知道如何实现这一点。

最佳答案

我认为您可能正在使用两个不同版本的repa。通过说来检查

ghc-pkg list repa

并查看显示了多少个版本。我怀疑您正在从一个实例导入 Data.Array.Repa,但 Data.Array.Repa.IO.DevIL 取决于另一个实例。错误消息中有提示:

Couldn't match expected type `Array r0 DIM3 a0'
with actual type `repa-3.2.3.1:Data.Array.Repa.Base.Array

有一次,GHC 说Array,还有一次,它说repa-3.2.3.1:Data.Array.Repa.Base.Array。这通常意味着它明确想要区分两次出现的 Array 类型。

如果我的怀疑是正确的,您可以隐藏 repa 的一个版本(版本 3.2.3.1 且正在使用的版本)由repa-devil)通过传递

-hide-package repa-<version>

(填写正确的版本号)到GHC,或者您可以通过隐藏包

ghc-pkg hide repa-<version>

关于haskell - 索引使用 repa-devil 读取的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16080381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com