小编Rav*_*yay的帖子

如何在Mat变量中编辑/读取OpenCv中的像素值?

我正在寻找一种从Mat(或Mat3b)变量编辑/读取像素的有效方法.

我用过 :-

Image.at<Vec3b>(i,j)
Run Code Online (Sandbox Code Playgroud)

但它似乎很慢.

我也用过这个: -

A.data[A.channels()*A.cols*i + j + 0]
Run Code Online (Sandbox Code Playgroud)

但我面临的问题是当我运行这个循环时

for(i=0; j<A.rows; i++){
   for(j=0; j<A.cols; j++){
           A.data[A.channels()*A.cols*i + j + 0] = 0;
           A.data[A.channels()*A.cols*i + j + 1] = 0;
           A.data[A.channels()*A.cols*i + j + 2] = 0;
    }
} 
Run Code Online (Sandbox Code Playgroud)

只有一部分图像变黑了.

c++ opencv getpixel mat

14
推荐指数
2
解决办法
4万
查看次数

字符频率

我试图使用Haskell找到文件中的字符频率.我希望能够处理大小约500MB的文件.

我到现在为止做了什么

  1. 它完成了这项工作但是有点慢,因为它解析了256次文件

    calculateFrequency :: L.ByteString -> [(Word8, Int64)]
    calculateFrequency f = foldl (\acc x -> (x, L.count x f):acc) [] [255, 254.. 0]
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我也尝试过使用Data.Map,但程序内存耗尽(在ghc解释器中).

    import qualified Data.ByteString.Lazy as L
    import qualified Data.Map as M
    
    calculateFrequency' :: L.ByteString -> [(Word8, Int64)]
    calculateFrequency' xs = M.toList $ L.foldl' (\m word -> M.insertWith (+) word 1 m) (M.empty) xs
    
    Run Code Online (Sandbox Code Playgroud)

haskell bytestring

5
推荐指数
2
解决办法
860
查看次数

标签 统计

bytestring ×1

c++ ×1

getpixel ×1

haskell ×1

mat ×1

opencv ×1