首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用repa-devil对读取的图像进行索引

使用repa-devil对读取的图像进行索引
EN

Stack Overflow用户
提问于 2013-04-18 18:23:21
回答 1查看 252关注 0票数 3

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

代码语言:javascript
复制
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

我得到的错误是:

代码语言:javascript
复制
[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 something DIM3 something,但它得到了一个Array F DIM3 Word8。为什么这些类型不匹配?我已经阅读了Haskell wiki上的Repa Tutorial,但我仍然不知道如何让它工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-18 19:45:04

我认为你可能有两个不同版本的repa。检查方式是:

代码语言:javascript
复制
ghc-pkg list repa

看看有多少个版本出现。我怀疑您是从一个实例导入Data.Array.Repa,但Data.Array.Repa.IO.DevIL依赖于另一个实例。错误消息中包含以下提示:

代码语言:javascript
复制
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使用)

代码语言:javascript
复制
-hide-package repa-<version>

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

代码语言:javascript
复制
ghc-pkg hide repa-<version>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16080381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档