OpenCV for Unityでローカル画像読み込み
実行結果
内部でTexture → Mat → Texture2Dに変換されているのでMatの部分でOpenCVでの加工に対応しています。
一応、可愛い猫が表示されました。
https://gyazo.com/b774acb202ba400fe0bafc50b435b79c
開発準備
読み込むための画像を用意してください。
用意した画像は「Assets/Resources/LoadImage/」に追加してください。
今回はcat.jpgという名前で可愛い猫の画像を用意しました。
Scriptの追加
画像読み込みには「Imgcodecs.imread("");」を使用します。
以下はそのScriptです。
code:LoadImageScript.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using OpenCVForUnity;
public class LoadImageScript : MonoBehaviour {
public RawImage rawImage;
private Mat originMat;
private Texture2D texture;
private Color32[] color;
// Use this for initialization
void Start () {
if (rawImage) {
//Mat画像をPathから読み込み
originMat = Imgcodecs.imread (Application.dataPath + "/Resources/LoadImage/cat.jpg");
if (originMat != null) {
if (!originMat.empty ()) {
//Color32の作成
if (color != null) {
//Texture2Dを作成
texture = new Texture2D (originMat.cols (), originMat.rows ());
//描画するRawImageにTexture2Dを設定
rawImage.texture = texture;
}
}
}
} else {
Debug.LogError("NotFound:rawImage");
}
}
// Update is called once per frame
void Update () {
if (originMat != null) {
if (!originMat.empty ()) {
if (color != null) {
if (texture != null) {
/* 画像加工開始 */
/* 画像加工終了 */
//Matの編集内容をTexture2Dに反映
Utils.matToTexture2D (originMat, texture, color);
}
}
}
}
}
}
Hierarchyの構成
LoadImageScript.csを作成したら、プロジェクトに追加します。
Hierarchyはこんな感じです。
UI.RawImageを追加してカメラなどを調節しただけです。
https://gyazo.com/985c6e8383d2021e4d5fe7470078cc01
作成したRawImageにLoadImageScript.csのComponentを追加してシリアライズのRawImageに自身を登録。
https://gyazo.com/fb17d040e452054f5837865ae090e9ed