画像フィルター【Processing】

はじめまして、ますみです！

[![自己紹介.png](https://www.umi-mori.jp/wp-content/uploads/2023/02/introduction_banner_2-2048x533.png)](https://bit.ly/banner_intro_masumi_creator_qiita)


# はじめに
今回の短めスクリプトでは、「**画像フィルター**」という画像にフィルターをかけて、加工することをやりたいと思います。
長さ：`7行`（`122文字`）

# 作品サンプル
<img width="700" alt="sample.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/85bae34c-196b-9dcd-9e42-5d94e4a422a6.png">

# 最終的なコード
`java:Invert.pde
PImage myPhoto;

void setup() {
  size(500,500);
  myPhoto = loadImage("photo.png");
  myPhoto.filter(INVERT);
  image(myPhoto,0,0,500,500);
}
`

# データの構造
processingのデータ（`Invert.pde`）と画像のデータ（`photo.png`）を同じ階層のディレクトリに入れる。
<img width="150" alt="スクリーンショット 2018-08-18 19.40.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/7a6f76e9-b141-a8e5-709d-7f6a6b131590.png">


# コードの解説

## 1. `PImage myPhoto;`
myPhotoという名前の**PImage型の変数**を定義する。

## 2. `void setup(){}`
はじまった時に、{}の中身を**一度実行する**。

## 3. `size(500,500);`
**画面の横と縦の大きさ**をそれぞれ500pxにする。

## 4. `myPhoto = loadImage("photo.png");`
myPhotoという変数に`photo.png`という**画像データを読み込み**、代入する。

## 5. `myPhoto.filter(INVERT);`
myPhotoという画像（変数）の**色を反転させる**フィルターをかける。

## 6. `image(myPhoto,0,0,500,500);`
myPhotoという画像（変数）を、座標(0,0)の位置に、500×500pxのサイズで貼り付ける。

# アレンジ・コード
#### \>>`myPhoto.filter(THRESHOLD, 0.5);`
画像に**しきい値の処理**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.25.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/ce69ff90-5b37-d2cf-5bef-2bef56d994b9.png">

#### \>>`myPhoto.filter(GRAY);`
画像に**グレースケール加工**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.26.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/4eef314a-6145-c616-6533-4fff2fab2cbf.png">

#### \>>`myPhoto.filter(POSTERIZE, 5);`
画像に**ポスタリゼーション加工**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.26.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/92d2b8b0-d6fa-5e43-8913-b736d96a0c83.png">

#### \>>`myPhoto.filter(BLUR, 5);`
画像に**ぼやけ加工**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.26.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/a7fc54b2-ca5c-d9a6-bd0a-86532df8f58d.png">

#### \>>`myPhoto.filter(ERODE);`
画像に**明るい部分を弱くする加工**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.26.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/c7db3442-68a0-af41-9306-bd741c7eab17.png">

#### \>>`myPhoto.filter(DILATE);`
画像に**明るい部分を強くする加工**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.26.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/b8a67d9c-8e9d-eaed-f09d-e2428c29c1f0.png">

#### \>>`myPhoto.filter(OPAQUE);`
画像に**完全に不透明にする加工**をかける。
<img width="200" alt="スクリーンショット 2018-08-18 20.26.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/240280/ddf71482-b77a-16d5-3543-9557f0380cf6.png">

### サンプルコード（アレンジ）

```java:photo_processing.pde
PImage myPhoto;

void setup() {
  size(500,500);

  myPhoto = loadImage("photo.png");
  printPhoto(0,0);

  myPhoto.filter(INVERT);
  printPhoto(1,0);

  myPhoto.filter(THRESHOLD, 0.5);
  printPhoto(2,0);

  myPhoto.filter(GRAY);
  printPhoto(0,1);

  myPhoto.filter(POSTERIZE, 5);
  printPhoto(1,1);

  myPhoto.filter(BLUR, 5);
  printPhoto(2,1);

  myPhoto.filter(ERODE);
  printPhoto(0,2);

  myPhoto.filter(DILATE);
  printPhoto(1,2);

  myPhoto.filter(OPAQUE);
  printPhoto(2,2);
}

void printPhoto(int a, int b){
  image(myPhoto, a*myPhoto.width/3, b*myPhoto.height/3, myPhoto.width/3, myPhoto.height/3);
  myPhoto = loadImage("photo.png");
}
```

### サンプル（アレンジ）

# 最後に
最後まで読んでくださり、ありがとうございました！
いかがだったでしょうか？

この記事を通して、少しでもあなたの学びに役立てば幸いです！

:::note info
【仕事の相談はこちら】
お仕事の相談のある方は、下記のフォームよりお気軽にご相談ください。

[問い合わせフォームはこちら](https://forms.gle/G5g1SJ7BBZw7oXYA7)

もしもメールでの問い合わせの方がよろしければ、下記のメールアドレスへご連絡ください。

info*galirage.com（*を@に変えてご送付ください）

🎁 「生成AI活用の無料相談券」もしくは「生成AIの社内ガイドライン（無料PDF）」を『公式LINE』で配布中 🎁
『生成AIを業務に活用したいけど、どうしたらいいかわからない』といった声を多くいただきます。

Galirageでは公式LINEにて、チャットやオンライン会議で「完全個別の生成AI活用無料相談会」を実施しております！
（期間限定で実施しているため、ご興味ある方はお早めに以下のLINE公式アカウントをご登録ください^^）
https://lin.ee/rvz6lMN

※ 予告なく、キャンペーンを終了する可能性がございますが、ご了承ください。

【業務内容】
具体的には、以下のお仕事を中心に受け付けております！（[詳しくはこちら](https://galirage.notion.site/Galirage-AI-c2f3945fafb0433d8d2fd03e56927fd8)）
1. 受託開発（例：生成AIを使った社内システムの開発）
2. コンサルティング（例：技術戦略のアドバイス）
3. 講演（例：社内研修、イベント登壇）

※ 特に「生成AIを使ったシステム開発のご依頼」が多く、ご好評いただいております。

【これまでの相談事例】
以下のようなご相談が多くあります。

🔑 機密情報を漏洩させないための、生成AIのシステム構築をお願いしたい。
🤖 自社データを用いたFAQチャットボットの作り方を知りたい。
💡 ChatGPTを、自分たちの事業にどのように活かせるか、アドバイスやアイデアが欲しい。
:::
# おまけ
エンジニアの仲間（データサイエンティストも含む）を増やしたいため、公式LINEを始めました🎉

「**一緒に仕事をしてくれる方**」「**友だちとして仲良くしてくれる方**」は、友だち追加をしていただけますと嬉しいです！（仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆）

とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました！

友だち追加後に、アンケートに回答してくれた方へ「**エンジニア図鑑（職種20選）**」のPDFをお送りします◎

https://lin.ee/hFUN4TL

[![](https://www.umi-mori.jp/wp-content/uploads/2023/10/line_banner_v2.png)](https://lin.ee/hFUN4TL)