プログラミング + アカデミック + 何か面白いこと

  1. Academic
  2. 0 view

[Haskell]Make Inverse Image

Pocket

Target

I’ve been able to read and output PGM format image.
So, I’ll make image processing program today.
At first is reverse image.

Program

import System.IO
import System.Environment (getArgs)

main = do
    args <- getArgs
    if length args <= 1 then do
        print "usage : ./pgm-input input.pgm output.pgm"
    else do
        infile <- openFile (head args) ReadMode

        -- Read PGM Header
        pgm_type <- hGetLine infile
        pgm_comment <- hGetLine infile
        pgm_max_brightness <- hGetLine infile
        pgm_size <- hGetLine infile
        -- Read PGM Pixels-
        pixels_handle <- hGetContents infile
        let src_contents = take (length pixels_handle) $ pixels_handle
        let src_contents_lines = lines src_contents
        let src_pixels = concat (map (\x -> words x) src_contents_lines)
        let int_pixels = map (\x -> read x::Int) src_pixels
        let dist_pixels = map (\x -> 255 - x) int_pixels

        -- Output PGM File
        fh <- openFile (args !! 1) WriteMode
        hPutStrLn fh pgm_type
        hPutStrLn fh pgm_comment
        hPutStrLn fh pgm_max_brightness
        hPutStrLn fh pgm_size
        hPutStr fh ((foldr (\x xs -> show(x) ++ " " ++ xs ) "") dist_pixels)

        hClose infile
        hClose fh

Result

Input

car

Output

car-out

It works.

Related Posts

  • 2013年7月13日 [Haskell]Image Processing Horizontal Edge やりたいこと 水平方向の微分で水平方向のエッジ画像を出力する。 プログラム プログラムはこんな感じ。 結果 入力画像 出力画像 Target Output horizontal edge image. Program […]
  • 2013年7月9日 [Haskell]Input PGM file part2 やりたいこと 昨日まででヘッダーは読み込めるようになったため、 今度はピクセルの情報を読みだす。 プログラム プログラムは以下の感じ。 入力画像 出力画像 うまくいっているみたいだ。 What I want to […]
  • 2013年7月8日 [Haskell]Input PGM file part1 やりたいこと HaskellでPGMファイルを生成することができたから、 今度は入力出来るようにしてみたい。 プログラム とりあえずヘッダーを読み込んで出力するところまで。 実行してみる。 Target I could output […]
  • 2013年7月5日 [Haskell]Make PGM File part1 やりたいこと 今後Haskellで画像処理をするためにPGMファイルを生成させてみる。 プログラム まずはヘッダを出力するところまで。 コンパイルして実行してみる。 What I want to do I'll output PGM […]
  • 2013年7月7日 [Haskell] Make PGM File part3 やりたいこと 昨日まででランダムな配列を作成することが出来るようになったから、 出力の形式を整えてPGMファイルを生成する。 プログラム foldrを使ってこんな感じで書いてみた。 実行するとこんな感じの内容のファイルができる。 […]
  • 2013年7月4日 [Haskell]Banana-Split Law part1 やりたいこと 以下のバナナスプリット則の例を実装したい。 ・(|f|),(|g|)・=(|・f"F(π1),g"F(π2)・|) スクリプト Haskellでfoldrの結果をタプルで出力させるための文法が分からなくて、 Google先生も教えてくれな […]
Pocket

Academic recent post

  1. [Just Touch]Microsoft Quantum Development Kit…

  2. Visualization of Neural Network and its Train…

  3. [Machine Learning]Created docker image includ…

  4. [OpenCV][Ruby]Auto check web page design corr…

  5. [MachineLearning]How to introduce to real pro…

関連記事

PAGE TOP