SlideShare ist ein Scribd-Unternehmen logo
1 von 167
OpenCVで作る塗り絵ARの基礎
ARコンテンツ作成勉強会
自己紹介
氏名:吉永崇(Takashi Yoshinaga)
所属:九州先端科学技術研究所(ISIT)
専門:ARを用いた医療支援や運動計測
コミュニティ:ARコンテンツ作成勉強会 主催
ARコンテンツ作成勉強会の紹介
 2013年5月に勉強会をスタート
 ARコンテンツの作り方をハンズオン形式で学ぶ
 人数は5~10名程度の少人数で実施
 参加条件はAR/VRに興味がある人(知識不要)
 各地で開催 (福岡、熊本、宮崎、長崎、大分、 鹿児島、山口、広島、関東)
Twitterと勉強会ページで情報を発信しています
#AR_Fukuoka Googleで「AR勉強会」で検索
ダウンロード
①演習用素材
http://arfukuoka.lolipop.jp/nurie/sample.zip
②ARCoreSDK(v1.8.0)
https://github.com/google-ar/arcore-unity-sdk/releases/tag/v1.8.0
③Unity2017.4.15f1以降
https://unity3d.com/jp/unity/qa/lts-releases?version=2017.4
④Android SDK
https://developer.android.com/studio
※Unityを用いたAndroidビルド設定は各自で済ませてください
Demo
https://youtu.be/E5Jy4iunpyQ https://youtu.be/MviBGZtiv5A
ARCore
Googleが提供する次世代ARプラットフォーム。普通のスマホでマーカーレスARを実現。
【主要機能】
(1) 自己位置推定 (Motion Tracking)
(2) 平面認識 (Environmental Understanding)
(3) 明るさ推定 (Light Estimation)
(4) マーカー認識 (Augmented Image)
(5) 空間共有 (Cloud Anchor)
(6) 顔認識 (Augmented Faces)
(1) 自己位置推定 (Motion Tracking)
OpenCV Plus
 画像処理ライブラリの定番としてお馴染みのOpenCVのUnity版
 C#版のOpenCVSharpをベースにUnityに対応させたアセット
 Windows/Mac/Android/iOSに対応。しかも無料!
画像処理手順
切り抜き
ROI(関心領域)
二値化
四角形の認識
幾何変換
input
output
CGに
アタッチ
まずはUnityの操作の基本
プロジェクトを作成
New
プロジェクトを作成
最後にCreate Project
プロジェクト名
保存場所
Unityの操作画面(概要)
ゲーム空間の設計画面
ゲーム空間にCGを追加しよう
右クリック
3DObject → Cube
実行してみよう
クリックして実行
クリックして終了
カメラから見た空間
オブジェクトの位置・向き・サイズを調整
クリックして選択
移動 回転 拡大・縮小
Scene(設計画面)の視点を変えよう
[←] [→]で左右移動
[↑][↓]でズームイン/アウト
[Alt]+ドラッグで回転
+ドラッグで上下左右
数値を用いた位置・姿勢・サイズの指定
 オブジェクトの詳細の確認・追加・変更
はInspectorで行う
 例えば、TransformのPositionを
変更すると位置が変わる
②Positionを0 0 0に変更
① Cube
色情報の設定:テクスチャを指定
既存の3Dモデルにテクスチャ画像を貼り付けて見た目を変更
色情報の設定:マテリアルの作成
①Assets
②空白を右クリック
色情報の設定:マテリアルの作成
①Create
②Material
色情報の設定:マテリアルの作成
①NewMaterial
②ここをクリック
色情報の設定:マテリアルの作成
①Legacy Shaders
②Diffuse
色情報の設定:マテリアルの作成
ここでテクスチャ画像を指定する
色情報の設定:画像のインポート
①Assets
②ImportNewAsset...
色情報の設定:画像のインポート
①Sampleフォルダ
②ilovearとopencvを選択
③Import
色情報の設定:テクスチャを指定
NewMaterial
色情報の設定:テクスチャを指定
①ilovearに注目
②ilovearをドラッグ&ドロップ
色情報の設定:テクスチャを指定
画像が適用された
※CGにはまだ反映されない
色情報の設定:マテリアルの適用
①Cubeをクリック
②Materialsを開く
※▼をクリック
色情報の設定:マテリアルの適用
①NewMaterialに注目
②MaterialsのElement0
にドラッグ&ドロップ
色情報の設定:マテリアルの適用
見た目が変わる
色情報の設定:テクスチャの変更
①Cube
②NewMaterialの詳細を開く
色情報の設定:テクスチャの変更
①opencvに注目
②テクスチャ指定領域に
ドラッグ&ドロップ
色情報の設定:テクスチャの変更
見た目が変わった
ポイント&この後やりたいこと
【ポイント】
3Dオブジェクトにテクスチャを貼るというマテリアルを一度設定して
しまえば画像を差し替えるだけで見た目は変えられる。
【この後やりたいこと】
 カメラ画像から正方形を認識し、内側の色や絵をテクスチャ化
 テクスチャ画像をプログラム(スクリプト)で動的に差し替え
一旦、現状を保存
①File
②Save Scene as...
現状を保存:Sceneの保存
①適当に名前を付ける
(例:sample)
②保存
以降はCtrl/Command + Sで現状を保存
ARCore SDKの導入
①Assets
②Import Package
③Custom Packageから下記を開く
arcore-unity-sdk-v1.8.0.unitypackage
ARCore SDKの導入
Import
ARCore SDKの導入
GoogleARCoreが追加される
AR用カメラの設定
Main Cameraを削除
※右クリック→Delete
AR用カメラの設定
Assets→GoogleARCore→Prefabs
AR用カメラの設定
①ARCore Device
②Hierarchyにドラッグ&ドロップ
AR用カメラの設定
①ARCore Device
②DefaultSessionConfig
をダブルクリック
AR用カメラの設定
Camera Focus ModeをAutoに変更
表示オブジェクトの設定
Cubeをクリック
表示オブジェクトの設定
Position: 0, -0.2, 0.5
Scale: 全て0.1
補足
視点
ViewPoint
0.5
Y
X -0.2
Z
保存
Ctrl + S
または
Command + S
ビルド設定
①File
②Build Settings...
ビルド設定
①Android
②Switch Platform
ビルド設定
①Internal
②Player Settings
ビルド設定
①Resolution and Presentation
②Default OrientationをPortraitに変更
ビルド設定
①Other Settings
②Multithreaded Renderingをオフ
ビルド設定
①PackageNameを設定
例)com.fukuoka.test
②Minimum API Level
をAndrid 7.0に変更
ARCoreの利用設定(Unity2018のみ)
Allow unsafe Codeをオン
ARCoreの利用設定
①XR Settings
②ARCore Supportedをオン
Ctrl/Command+Sで現状を保存
実機インストール
①File
②Build & Run
実機インストール
①インストーラ(.apk)の名前を付ける
②保存
動作確認
画像処理を始める準備
OpenCV Plusの導入
①Window
②Asset Store
OpenCV Plusの導入
OpenCV Plusで検索
OpenCV Plusの導入
OpenCV Plusをクリック
OpenCV Plusの導入
ダウンロード
OpenCV Plusの導入
インポート
OpenCV Plusの導入
Import
OpenCV Plusの導入
OpenCV + Unity
が追加されていればOK
UIの作成
Game
UIの作成
①Free Aspectをクリック
②+をクリック
UIの作成
①名前を付ける
②800 × 1280
UIのインポート
②Import Package
①Assets
③Custom Package...
UIのインポート
②開く
①NurieUI.unitypackage
UIのインポート
Import
UIのインポート
Scene
UIのインポート
①Canvas
②Hierarchyにドラッグ&ドロップ
UIのインポート
UIが追加されているはず
UIのインポート
①Canvasをダブルクリック
②UIの全体が見える
UIのインポート
①xやzをクリック
②UIを正面に向ける
UIの役割
画像処理の過程
認識範囲
認識範囲の表示/非表示
キャプチャ開始
画像処理スクリプト記述の準備
空白を右クリック
画像処理スクリプト記述の準備
Create Empty
画像処理スクリプト記述の準備
①Game Object
②Add Component
画像処理スクリプト記述の準備
①New Script
②スクリプト名を決める
(例:ColoringScript)
③Create and Add
画像処理スクリプト記述の準備
①Game Object
②ColoringScript
が追加されていればOK
画像処理スクリプト記述の準備
ダブルクリック
OpenCV等のインポート
using UnityEngine;
using UnityEngine.UI;
using OpenCvSharp;
using OpenCvSharp.Demo;
public class ColoringScript : MonoBehaviour {
// Start関数は初期化のために一度だけ実行される
void Start () {
cg = GameObject.Find ("Robot Kyle");
}
// Update関数は毎フレーム実行される
void Update () {
}
}
変数の用意
public MeshRenderer target; //塗り絵の対象(Cube)の描画設定
public GameObject canvas; //UIが張り付けられたCanvas
public RawImage viewL, viewR; //画面下方の描画領域
UnityEngine.Rect capRect;//スクショ領域を保持
Texture2D capTexture; //スクショ画像を保持
Texture2D colTexture; //画像処理結果(カラー)を保持
Texture2D binTexture; //画像処理結果(白黒)を保持
void Start () {
}
void Update () {
}
canvas
viewL
viewR
colTexture
binTexture
UIと変数の関連付け
①GameObjectをクリック
②Targetという項目
があることを確認
UIと変数の関連付け
Cubeに注目
ColoringScriptの
Targetにドラッグ&ドロップ
UIと変数の関連付け
Canvasに注目
ColoringScriptの
Canvasにドラッグ&ドロップ
UIと変数の関連付け
RawImageに注目
ColoringScriptの
ViewLにドラッグ&ドロップ
UIと変数の関連付け
RawImage(1)に注目
ColoringScriptの
ViewRにドラッグ&ドロップ
画像処理手順
切り抜き
ROI(関心領域)
二値化
四角形の認識
幾何変換
input
output
CGに
アタッチ
画像処理手順
切り抜き 二値化
四角形の認識
幾何変換
output
CGに
アタッチ
input
準備:まずは画面全体をキャプチャしてみる
public MeshRenderer target;
public GameObject canvas;
public RawImage viewL, viewR;
UnityEngine.Rect capRect;
Texture2D capTexture;
Texture2D colTexture;
Texture2D binTexture;
void Start () {
int w = Screen.width;
int h = Screen.height;
//原点(0,0)から画面の縦横の長さまでをキャプチャ領域とする
capRect = new UnityEngine.Rect(0, 0, w, h);
//画面サイズの空画像を作成
capTexture =
new Texture2D(w, h, TextureFormat.RGB24, false);
}
width
height
(0,0)
画像処理用の関数
void Start () {
/*省略:前ページで記述した初期化*/
}
IEnumerator ImageProcessing()
{
canvas.SetActive(false);//Canvas上のUIを一時的に消す
yield return new WaitForEndOfFrame();//フレーム終了を待つ
capTexture.ReadPixels(capRect, 0, 0);//キャプチャ開始
capTexture.Apply();//各画素の色をテクスチャに反映
/*下記の一行でオブジェクトにテクスチャを張り付け*/
target.material.mainTexture = capTexture;
canvas.SetActive(true);//Canvas上のUIを再表示
}
public void StartCV()
{
StartCoroutine(ImageProcessing());//コルーチンの実行
}
ここに記述
StartCV()を呼び出す
①Buttonをクリック
②Buttonを探す
③OnClick()の
下方にある+をクリック
StartCV()を呼び出す
GameObjectに注目
OnClick()内のNoneと
書かれた箇所にドラッグ&ドロップ
StartCV()を呼び出す
①No Functionをクリック
②ColoringScript
StartCV()を呼び出す
StartCV()
Build & Run!
動作確認
Capture
画像処理手順
切り抜き 二値化
四角形の認識
幾何変換
output
CGに
アタッチ
input
画像処理手順
二値化
四角形の認識
幾何変換
output
CGに
アタッチ
切り抜き
ROI(関心領域)
input
関心領域(ROI: Region Of Interest)の切り抜き
void Start () {
int w = Screen.width;
int h = Screen.height;
//画面サイズに対するROIの位置・サイズを設定
int sx = (int)(w * 0.2); //X始点
int sy = (int)(h * 0.3); //y始点
w = (int)(w * 0.6); //横幅
h = (int)(h * 0.4); //縦幅
//キャプチャする領域を保持したRectを作成
capRect = new UnityEngine.Rect(0, 0, w, h);
capTexture =
new Texture2D(w, h, TextureFormat.RGB24, false);
}
capRect = new UnityEngine.Rect(sx, sy, w, h);
始点を変更
動作確認
Capture
台紙のデータ(pdf)はMarkersフォルダ内にあります
コードを整理(1/2)
IEnumerator ImageProcessing()
{
canvas.SetActive(false);
yield return new WaitForEndOfFrame();
//描画終了を待つ
capTexture.ReadPixels(capRect, 0, 0);//キャプチャ開始
capTexture.Apply();//各画素の色をテクスチャに反映
/*下記の一行でオブジェクトにテクスチャを張り付け*/
target.material.mainTexture = capTexture;
canvas.SetActive(true);
}
void CreateImage() {
/*ここに画像生成コードを移す*/
}
void ShowImage() {
/*ここに画像表示コードを移す*/
}
画像の生成
画像の表示
コードを整理(2/2)
IEnumerator ImageProcessing()
{
canvas.SetActive(false);//Canvas上のUIを一時的に消す
yield return new WaitForEndOfFrame();
CreateImage(); //画像の生成
ShowImage(); //画像の表示
canvas.SetActive(true);//Canvas上のUIを再表示
}
void CreateImage()
{
capTexture.ReadPixels(capRect, 0, 0);
capTexture.Apply();
}
void ShowImage()
{
target.material.mainTexture = capTexture;
}
画像処理手順
二値化
四角形の認識
幾何変換
output
CGに
アタッチ
切り抜き
ROI(関心領域)
input
切り抜き
ROI(関心領域)
input
画像処理手順
四角形の認識
幾何変換
output
CGに
アタッチ
二値化
ここからOpenCV!
切り抜き
ROI(関心領域)
input
画像処理手順
四角形の認識
幾何変換
output
CGに
アタッチ
二値化
グレースケール画像の二値化
0 255
0 255
0~255の輝度値を、ある値(しきい値)以上か未満かで分離することを二値化と呼ぶ。
画像処理すべき領域か否かをはっきり分けることができるため非常に重要なテクニック。
OpenCVで画像を扱う準備
Texture2D colTexture;
Texture2D binTexture;
//Mat:OpenCVで画像を扱うための形式
//bgrにはカラー、binには二値化画像
Mat bgr, bin;
void Start () {
int w = Screen.width;
int h = Screen.height;
//画面サイズに対するROIの位置・サイズを設定
int sx = (int)(w * 0.2); //X始点
int sy = (int)(h * 0.3); //y始点
w = (int)(w * 0.6); //横幅
h = (int)(h * 0.4); //縦幅
//キャプチャする領域を保持したRectを作成
capRect = new UnityEngine.Rect(sx, sy, w, h);
capTexture =
new Texture2D(w, h, TextureFormat.RGB24, false);
}
二値化
void CreateImage()
{
capTexture.ReadPixels(capRect, 0, 0);
capTexture.Apply();
//Texure2DをMatに変換
bgr = OpenCvSharp.Unity.TextureToMat(capTexture);
//カラー画像をグレースケール(濃淡)画像に変換
bin = bgr.CvtColor(ColorConversionCodes.BGR2GRAY);
//しきい値を自動で見つけて二値化。結果を白黒反転
bin = bin.Threshold(100, 255, ThresholdTypes.Otsu);
Cv2.BitwiseNot(bin, bin);
}
Color Image Gray Scale Binary Inverse
元画像と二値化結果の表示
void ShowImage()
{
//Textureが画像を保持しているならいったん削除
if (colTexture != null) { DestroyImmediate(colTexture); }
if (binTexture != null) { DestroyImmediate(binTexture); }
//Matをテクスチャに変換
colTexture = OpenCvSharp.Unity.MatToTexture(bgr);
binTexture = OpenCvSharp.Unity.MatToTexture(bin);
//RawImageに画像を表示
viewL.texture = colTexture;
viewR.texture = binTexture;
//スクショ画像をモデルに適用
target.material.mainTexture = colTexture;
}
Matに関するメモリの開放
IEnumerator ImageProcessing()
{
canvas.SetActive(false);
yield return new WaitForEndOfFrame();
CreateImage(); //画像の生成(ここでbin,bgrのメモリ確保)
ShowImage(); //画像の表示
//Mat用に確保したメモリを解放
bgr.Release();
bin.Release();
canvas.SetActive(true);
}
動作確認
①ROIにマーカーを収める
②Capture
③切り抜き画像と
二値化画像
切り抜き
ROI(関心領域)
input
画像処理手順
四角形の認識
幾何変換
output
CGに
アタッチ
二値化
二値化切り抜き
ROI(関心領域)
input
画像処理手順
幾何変換
output
CGに
アタッチ
四角形の認識
矩形認識の準備
IEnumerator ImageProcessing()
{
canvas.SetActive(false);
yield return new WaitForEndOfFrame();
CreateImage(); //画像の生成
Point[] corners; //矩形の4頂点を格納(予定)
FindRect(out corners); //矩形の認識
ShowImage(); //画像の表示
bgr.Release();
bin.Release();
canvas.SetActive(true);
}
void FindRect(out Point[] corners)
{
/*次のページで矩形認識コードを記述*/
}
矩形認識:まずは輪郭の認識(FindRect内)
//頂点をnull(空)で初期化
corners = null;
//輪郭を構成する点と階層
Point[][] contours;
HierarchyIndex[] h;
//輪郭認識
bin.FindContours(out contours, out h, RetrievalModes.External,
ContourApproximationModes.ApproxSimple);
//面積が最大となる輪郭を処理対象とする
double maxArea = 0;
for(int i = 0; i < contours.Length; i++)
{
double area = Cv2.ContourArea(contours[i]);
if (area > maxArea)
{
maxArea = area;
corners = contours[i];
}
}
現状確認
void FindRect(out Point[] corners)
{
/*スペースの都合により省略*/
double maxArea = 0;
for (int i = 0; i < contours.Length; i++)
{
double area = Cv2.ContourArea(contours[i]);
if (area > maxArea)
{
maxArea = area;
corners = contours[i];
}
}
//面積最大の輪郭cornersをbgr上に描画
if (corners != null)
{
bgr.DrawContours(
new Point[][] { corners }, 0, Scalar.Red, 5);
}
}
動作確認
この後やりたいこと
 直線的な輪郭も厳密には直線じゃない
 多少曲がっていても直線とみなしたい
 大きく曲がっている場合は無視したい
解決策
 直線に近似したときに本来の輪郭の長さ
との差が一定値以内であれば直線とみなす
認識した輪郭が四角形であれば4つの頂点を取得したい
ところが・・・
vs誤差小 誤差大
矩形認識:多角形近似と矩形認識
void FindRect(out Point[] corners)
{
/*スペースの都合により省略*/
double maxArea = 0;
for(int i = 0; i < contours.Length; i++)
{
//輪郭の長さを算出
double length = Cv2.ArcLength(contours[i], true);
//多角形近似(全周の1%以内の誤差を許容)
Point[] tmp = Cv2.ApproxPolyDP(
contours[i], length * 0.01f, true);
double area = Cv2.ContourArea(contours[i]);
//頂点数が4つなら(四角形なら)という条件を追加
if (area > maxArea)
{
maxArea = area;
corners = contours[i];
}
}
/*次のページに続く*/
if (tmp.Length == 4 && area > maxArea)
corners = tmp;
現状確認
void FindRect(out Point[] corners)
{
/*スペースの都合により省略(輪郭認識)*/
if (corners != null)
{
bgr.DrawContours(
new Point[][] { corners }, 0, Scalar.Red, 5);
//各頂点の位置に円を描画
for(int i = 0; i < corners.Length; i++)
{
bgr.Circle(corners[i], 20, Scalar.Blue, 5);
}
}
}
動作確認
四角形以外は
認識されない
次に行く前に
void FindRect(out Point[] corners)
{
/*スペースの都合により省略(輪郭認識)*/
if (corners != null)
{
bgr.DrawContours(
new Point[][] { corners }, 0, Scalar.Red, 5);
//各頂点の位置に円を描画
for(int i = 0; i < corners.Length; i++)
{
bgr.Circle(corners[i], 20, Scalar.Blue, 5);
}
}
}
描画コードをコメントアウト
void FindRect(out Point[] corners)
{
/*スペースの都合により省略(輪郭認識)*/
/*if (corners != null)
{
bgr.DrawContours(
new Point[][] { corners }, 0, Scalar.Red, 5);
//各頂点の位置に円を描画
for(int i = 0; i < corners.Length; i++)
{
bgr.Circle(corners[i], 20, Scalar.Blue, 5);
}
}*/
}
二値化切り抜き
ROI(関心領域)
input
画像処理手順
幾何変換
output
CGに
アタッチ
四角形の認識
四角形の認識
二値化切り抜き
ROI(関心領域)
input
画像処理手順
output
CGに
アタッチ
幾何変換
幾何変換
(0, 0) (255, 0)
(0, 255) (255 255)
[0]
[1] [2]
[3]
 画像処理によって得られた4頂点と画像(256*256)の4頂点とを対応付ける
 変換パラメータ(行列)を算出して真正面から見た画像に変換する
幾何変換を用いた形状補正
IEnumerator ImageProcessing()
{
canvas.SetActive(false);
yield return new WaitForEndOfFrame();
CreateImage(); //画像の生成
Point[] corners; //矩形の4頂点を格納
FindRect(out corners); //矩形の認識
TransformImage(corners); //正面から見た画像に変換
ShowImage(); //画像の表示
bgr.Release();
bin.Release();
canvas.SetActive(true);
}
void TransformImage(Point[] corners)
{
/*次のページで形状の補正を行う*/
}
幾何変換を用いた形状補正
void TransformImage(Point[] corners)
{
//4頂点が検出されていなければ何もしない
if (corners == null) return;
//検出された4頂点の座標を入力
Point2f[] input = { corners[0], corners[1],
corners[2], corners[3] };
//テクスチャとして使用する正方形画像の4頂点の座標を入力
Point2f[] square =
{ new Point2f(0, 0), new Point2f(0, 255),
new Point2f(255, 255), new Point2f(255, 0) };
//歪んだ四角形を正方形に変換するパラメータを計算
Mat transform = Cv2.GetPerspectiveTransform(input, square);
//変換パラメータに基づいて画像を生成
Cv2.WarpPerspective(bgr,bgr,transform, new Size(256, 256));
}
(0, 0) (255, 0)
(0, 255) (255 255)
[0]
[1] [2]
[3]
動作確認
四角形が右肩上がりor下がりかによってテクスチャの向きが異なる
横向いてしまう
解説
 OpenCVでは画像左上からスキャンを開始し、最初に見つかった白画素
を起点に反時計回りに輪郭スキャンを行う。
 傾きによっては4頂点の格納順の入れ替えを行う必要がある。
[0]
[1]
[2]
[3]
[0]
[1]
[2]
[3]
成功例 失敗例
頂点の並べ替え
void TransformImage(Point[] corners)
{
if (corners == null) return;
//4頂点の並べ替え
SortCorners(corners);
Point2f[] input = { corners[0], corners[1],
corners[2], corners[3] };
Point2f[] square =
{ new Point2f(0, 0), new Point2f(0, 255),
new Point2f(255, 255), new Point2f(255, 0) };
Mat transform = Cv2.GetPerspectiveTransform(input, square);
Cv2.WarpPerspective(bgr,bgr,transform, new Size(256, 256));
}
void SortCorners(Point[] corners)
{
/*4頂点の並べ替えを行う*/
}
頂点の並べ替え
void SortCorners(Point[] corners)
{
System.Array.Sort(corners, (a, b) => a.X.CompareTo(b.X));
if (corners[0].Y > corners[1].Y)
{
corners.Swap(0, 1);
}
if (corners[3].Y > corners[2].Y)
{
corners.Swap(2, 3);
}
}
[0]
[1]
[2]
[3]
[2]
[0]
[1]
[3]
[3]
[0]
[1]
[2]
全体を
Xでソート
[2][3]を
Yでソート
枠の内側の画像を取得
void TransformImage(Point[] corners)
{
if (corners == null) return;
SortCorners(corners);
Point2f[] input = { corners[0], corners[1],
corners[2], corners[3] };
Point2f[] square =
{ new Point2f(0, 0), new Point2f(0, 255),
new Point2f(255, 255), new Point2f(255, 0) };
Mat transform = Cv2.GetPerspectiveTransform(input, square);
Cv2.WarpPerspective(bgr,bgr,transform, new Size(256, 256));
int s = (int)(256 * 0.05); //今回、枠の太さを幅の5%と設計
int w = (int)(256 * 0.9); //両サイドを差し引いた90%が内側の幅
OpenCvSharp.Rect innerRect
= new OpenCvSharp.Rect(s, s, w, w);
bgr = bgr[innerRect];
}
四角形の認識
二値化切り抜き
ROI(関心領域)
input
画像処理手順
output
CGに
アタッチ
幾何変換
幾何変換
四角形の認識
二値化切り抜き
ROI(関心領域)
input
画像処理手順
output
CGに
アタッチ
オブジェクトへの張り付け
void ShowImage()
{
//すでにcolTextureが存在するならいったん削除
if (colTexture != null) { DestroyImmediate(colTexture); }
if (binTexture != null) { DestroyImmediate(binTexture); }
//Matをテクスチャに変換
colTexture = OpenCvSharp.Unity.MatToTexture(bgr);
binTexture = OpenCvSharp.Unity.MatToTexture(gray);
//RawImageに切り抜き画像を表示
viewL.texture = colTexture;
viewR.texture = binTexture;
//塗り絵のターゲットにテクスチャを適用
target.material.mainTexture = capTexture;
//Canvas再表示
canvas.SetActive(true);
}
target.material.mainTexture = colTexture;
ここ!
動作確認
ROI(Panel)の表示/非表示切り替え
①Toggle
②OnValueChanged
の+をクリック
ROI(Panel)の表示/非表示切り替え
①Panelに注目
②OnValue Changed内の
Noneにドラッグ&ドロップ
ROI(Panel)の表示/非表示切り替え
No Functionをクリック
ROI(Panel)の表示/非表示切り替え
①GameObject
②Dynamic bool内の
SetActiveをクリック
動作確認
チェックを外す
3Dモデルを差し替えよう
Poly
Googleが提供する3Dデータ共有サービス
https://poly.google.com/
3Dモデルの入手
ここから検索
画面上部のフォームから「Duck」で検索
3Dモデルの入手
Rubber Duck
3Dモデルの入手
ダウンロード
→ OBJファイル
3Dモデルの入手
archive.zipを解凍
3Dモデルのインポート
①Assets
②archiveフォルダを
ドラッグアンドドロップ
3Dモデルの差し替え
Cubeを削除
3Dモデルの差し替え
Assets → archive
3Dモデルの差し替え
①RubberDuck
②Hierarchyにドラッグ&ドロップ
3Dモデルの調整
①RubberDuck
②Position 0 -0.25 0.5
Rotation 0 150 0
Scale 0.03 0.03 0.03
3Dモデルの差し替え
RubberDuck
→RubberDuck_mesh
3Dモデルの差し替え
GameObject
3Dモデルの差し替え
RubberDuck_meshを
Targetにドラッグアンドドロップ
完成!
台紙のデータはMarkersフォルダ内にあります

Weitere ähnliche Inhalte

Was ist angesagt?

A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)Takashi Yoshinaga
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
HoloLens2とMeta QuestではじめるWebXR
HoloLens2とMeta QuestではじめるWebXRHoloLens2とMeta QuestではじめるWebXR
HoloLens2とMeta QuestではじめるWebXRTakashi Yoshinaga
 
HoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたHoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたTakahiro Miyaura
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~エピック・ゲームズ・ジャパン Epic Games Japan
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
KinectでAR空間に入り込もう
KinectでAR空間に入り込もうKinectでAR空間に入り込もう
KinectでAR空間に入り込もうTakashi Yoshinaga
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingTakashi Yoshinaga
 
はじめようARCore in 札幌
はじめようARCore in 札幌はじめようARCore in 札幌
はじめようARCore in 札幌Takashi Yoshinaga
 
AI x OpenCV x WebAR: Selfie Segmentationを使ってみよう
AI x OpenCV x WebAR: Selfie Segmentationを使ってみようAI x OpenCV x WebAR: Selfie Segmentationを使ってみよう
AI x OpenCV x WebAR: Selfie Segmentationを使ってみようTakashi Yoshinaga
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るUnity Technologies Japan K.K.
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!Unity Technologies Japan K.K.
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編NAKAOKU Takahiro
 
UnityによるHoloLensアプリケーション入門
UnityによるHoloLensアプリケーション入門UnityによるHoloLensアプリケーション入門
UnityによるHoloLensアプリケーション入門Yuichi Ishii
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介torisoup
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】Unity Technologies Japan K.K.
 
Mixed Reality Toolkit V3について
Mixed Reality Toolkit V3についてMixed Reality Toolkit V3について
Mixed Reality Toolkit V3についてTakahiro Miyaura
 

Was ist angesagt? (20)

A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
A-Frameで始めるWebXRとハンドトラッキング (HoloLens2/Oculus Quest対応)
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
HoloLens2とMeta QuestではじめるWebXR
HoloLens2とMeta QuestではじめるWebXRHoloLens2とMeta QuestではじめるWebXR
HoloLens2とMeta QuestではじめるWebXR
 
HoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみたHoloLensで音声認識をする方法を色々試してみた
HoloLensで音声認識をする方法を色々試してみた
 
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
UE4のライティング解体新書~効果的なNPRのためにライティングの仕組みを理解しよう~
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
KinectでAR空間に入り込もう
KinectでAR空間に入り込もうKinectでAR空間に入り込もう
KinectでAR空間に入り込もう
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
 
はじめようARCore in 札幌
はじめようARCore in 札幌はじめようARCore in 札幌
はじめようARCore in 札幌
 
AI x OpenCV x WebAR: Selfie Segmentationを使ってみよう
AI x OpenCV x WebAR: Selfie Segmentationを使ってみようAI x OpenCV x WebAR: Selfie Segmentationを使ってみよう
AI x OpenCV x WebAR: Selfie Segmentationを使ってみよう
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
UE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろうUE4でマルチプレイヤーゲームを作ろう
UE4でマルチプレイヤーゲームを作ろう
 
Nreal Lightハンズオン
Nreal LightハンズオンNreal Lightハンズオン
Nreal Lightハンズオン
 
UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!UnityのクラッシュをBacktraceでデバッグしよう!
UnityのクラッシュをBacktraceでデバッグしよう!
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編
 
UnityによるHoloLensアプリケーション入門
UnityによるHoloLensアプリケーション入門UnityによるHoloLensアプリケーション入門
UnityによるHoloLensアプリケーション入門
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
Mixed Reality Toolkit V3について
Mixed Reality Toolkit V3についてMixed Reality Toolkit V3について
Mixed Reality Toolkit V3について
 

Ähnlich wie OpenCV/ARCore/Unityで作る塗り絵AR

OpenCVでつくろうARスタンプアプリ in 熊本
OpenCVでつくろうARスタンプアプリ in 熊本OpenCVでつくろうARスタンプアプリ in 熊本
OpenCVでつくろうARスタンプアプリ in 熊本Takashi Yoshinaga
 
OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎 OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎 Takashi Yoshinaga
 
ARコンテンツ作成勉強会 in 宮崎: はじめようARCore
ARコンテンツ作成勉強会 in 宮崎: はじめようARCoreARコンテンツ作成勉強会 in 宮崎: はじめようARCore
ARコンテンツ作成勉強会 in 宮崎: はじめようARCoreTakashi Yoshinaga
 
エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門Takashi Yoshinaga
 
UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発Takashi Yoshinaga
 
オープンソースで始めるAR/VR開発
オープンソースで始めるAR/VR開発オープンソースで始めるAR/VR開発
オープンソースで始めるAR/VR開発Takashi Yoshinaga
 
ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門Takashi Yoshinaga
 
VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25
VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25
VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25Shunsuke Ishimoto
 
A-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVRA-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVRTakashi Yoshinaga
 
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VRHTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VRTakashi Yoshinaga
 
はじめようARCore: Motion Tracking & Image Tracking編
はじめようARCore: Motion Tracking & Image Tracking編はじめようARCore: Motion Tracking & Image Tracking編
はじめようARCore: Motion Tracking & Image Tracking編Takashi Yoshinaga
 
Unity勉強会ハンズオン
Unity勉強会ハンズオンUnity勉強会ハンズオン
Unity勉強会ハンズオンKodai Yano
 
Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!Yamato Honda
 
3Dプリント羽ばたき飛行機製作ワークショップ
3Dプリント羽ばたき飛行機製作ワークショップ3Dプリント羽ばたき飛行機製作ワークショップ
3Dプリント羽ばたき飛行機製作ワークショップ祐介 高橋
 
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もうTakashi Yoshinaga
 
AI x WebAR! MediaPipeの顔認識を使ってみよう!
AI x WebAR! MediaPipeの顔認識を使ってみよう!AI x WebAR! MediaPipeの顔認識を使ってみよう!
AI x WebAR! MediaPipeの顔認識を使ってみよう!Takashi Yoshinaga
 
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボAI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボTakashi Yoshinaga
 

Ähnlich wie OpenCV/ARCore/Unityで作る塗り絵AR (17)

OpenCVでつくろうARスタンプアプリ in 熊本
OpenCVでつくろうARスタンプアプリ in 熊本OpenCVでつくろうARスタンプアプリ in 熊本
OpenCVでつくろうARスタンプアプリ in 熊本
 
OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎 OpenCVとARCoreで作るスタンプAR in 宮崎
OpenCVとARCoreで作るスタンプAR in 宮崎
 
ARコンテンツ作成勉強会 in 宮崎: はじめようARCore
ARコンテンツ作成勉強会 in 宮崎: はじめようARCoreARコンテンツ作成勉強会 in 宮崎: はじめようARCore
ARコンテンツ作成勉強会 in 宮崎: はじめようARCore
 
エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門エンジニアカフェ1周年イベント:WebAR/VR開発入門
エンジニアカフェ1周年イベント:WebAR/VR開発入門
 
UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発UnityとVuforiaで始めるAR開発
UnityとVuforiaで始めるAR開発
 
オープンソースで始めるAR/VR開発
オープンソースで始めるAR/VR開発オープンソースで始めるAR/VR開発
オープンソースで始めるAR/VR開発
 
ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門ノンプログラミングで始める AR 開発入門
ノンプログラミングで始める AR 開発入門
 
VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25
VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25
VFXGraphでつくろう素敵なARエフェクト In QBSLab on 2020.01.25
 
A-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVRA-Frameで始めるOculus Quest対応WebVR
A-Frameで始めるOculus Quest対応WebVR
 
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VRHTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
HTMLを書くだけで誰でも簡単!A-FrameではじめるWeb AR/VR
 
はじめようARCore: Motion Tracking & Image Tracking編
はじめようARCore: Motion Tracking & Image Tracking編はじめようARCore: Motion Tracking & Image Tracking編
はじめようARCore: Motion Tracking & Image Tracking編
 
Unity勉強会ハンズオン
Unity勉強会ハンズオンUnity勉強会ハンズオン
Unity勉強会ハンズオン
 
Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!Unityのポストエフェクトで遊ぶ!
Unityのポストエフェクトで遊ぶ!
 
3Dプリント羽ばたき飛行機製作ワークショップ
3Dプリント羽ばたき飛行機製作ワークショップ3Dプリント羽ばたき飛行機製作ワークショップ
3Dプリント羽ばたき飛行機製作ワークショップ
 
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
 
AI x WebAR! MediaPipeの顔認識を使ってみよう!
AI x WebAR! MediaPipeの顔認識を使ってみよう!AI x WebAR! MediaPipeの顔認識を使ってみよう!
AI x WebAR! MediaPipeの顔認識を使ってみよう!
 
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボAI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
AI x WebAR MediaPipeの顔認識を使ってみよう! in 織りなすラボ
 

Mehr von Takashi Yoshinaga

【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発Takashi Yoshinaga
 
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介Takashi Yoshinaga
 
iPad LiDARで エンジニアカフェを3Dスキャン
iPad LiDARでエンジニアカフェを3DスキャンiPad LiDARでエンジニアカフェを3Dスキャン
iPad LiDARで エンジニアカフェを3DスキャンTakashi Yoshinaga
 
Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発Takashi Yoshinaga
 
MRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみたMRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみたTakashi Yoshinaga
 
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオンTakashi Yoshinaga
 
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現Takashi Yoshinaga
 
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介Takashi Yoshinaga
 
Voxon Photonics VX1 で遊んでみた
Voxon Photonics VX1で遊んでみたVoxon Photonics VX1で遊んでみた
Voxon Photonics VX1 で遊んでみたTakashi Yoshinaga
 
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!Takashi Yoshinaga
 
コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動Takashi Yoshinaga
 
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020Takashi Yoshinaga
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)Takashi Yoshinaga
 
OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門Takashi Yoshinaga
 
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVROculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVRTakashi Yoshinaga
 
Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会Takashi Yoshinaga
 
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK Takashi Yoshinaga
 

Mehr von Takashi Yoshinaga (20)

【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発【準備編】OculusQuest/HoloLens2対応WebXR開発
【準備編】OculusQuest/HoloLens2対応WebXR開発
 
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
ARコンテンツ作成勉強会( #AR_Fukuoka )紹介
 
iPad LiDARで エンジニアカフェを3Dスキャン
iPad LiDARでエンジニアカフェを3DスキャンiPad LiDARでエンジニアカフェを3Dスキャン
iPad LiDARで エンジニアカフェを3Dスキャン
 
Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発Web技術ではじめようAR/VRアプリ開発
Web技術ではじめようAR/VRアプリ開発
 
MRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみたMRTKをNreal Lightに対応させてみた
MRTKをNreal Lightに対応させてみた
 
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
【準備編!】HoloLens 2/Oculus Quest対応WebXRハンズオン
 
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
Holo-SDKハンズオン:はじめようヘッドトラッキングを用いた3D表現
 
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
FUKUOKA Engineers Day 2021 発表資料:AR Fukuoka & HoloBox紹介
 
Voxon Photonics VX1 で遊んでみた
Voxon Photonics VX1で遊んでみたVoxon Photonics VX1で遊んでみた
Voxon Photonics VX1 で遊んでみた
 
AR-Frame x AR.js入門
AR-Frame x AR.js入門AR-Frame x AR.js入門
AR-Frame x AR.js入門
 
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
AI x WebXR: フェイストラッキングを用いた擬似3D表現を解説!
 
コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動コロナ禍中のコミュニティ活動
コロナ禍中のコミュニティ活動
 
Project HoloBox
Project HoloBoxProject HoloBox
Project HoloBox
 
AR Fukuoka紹介2020
AR Fukuoka紹介2020AR Fukuoka紹介2020
AR Fukuoka紹介2020
 
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
iPad LiDARで作ってみた in AR Fukuoka 忘年会2020
 
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
MRTKで始めるAR開発 (HoloLens 1 and 2, ARCore, ARkit)
 
OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門OSC2020 Fukuoka: インストールいらず、WebAR入門
OSC2020 Fukuoka: インストールいらず、WebAR入門
 
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVROculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
Oculus Quest 1&2 開発のはじめの一歩 with A-Frame WebVR
 
Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会Spatial Copy & Paste @HoloLensゆるっとLT会
Spatial Copy & Paste @HoloLensゆるっとLT会
 
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
 

Kürzlich hochgeladen

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Kürzlich hochgeladen (9)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

OpenCV/ARCore/Unityで作る塗り絵AR