質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

受付中

マーカー上にオブジェクトの描画をしたい。

himel
himel

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

1回答

0評価

0クリップ

506閲覧

投稿2021/12/13 13:11

編集2022/01/12 10:55

UnityとOpencvを用いてARUCOマーカー上にcudeを出現させたいのですが、どうやってできるでしょうか?
RawImageをつかってそこにカメラ画像を写してやっています。

using UnityEngine; using OpenCvSharp; using OpenCvSharp.Aruco; using UnityEngine.UI; using System.Collections.Generic; using System.Linq; public class AR1 : MonoBehaviour { [SerializeField] private RawImage _renderer; private int _width = 1920; private int _height = 1080; private int _fps = 30; private WebCamTexture _webcamTexture; private const PredefinedDictionaryName dictName = PredefinedDictionaryName.Dict6X6_250; private Dictionary ar_dict; private DetectorParameters detect_param; private Vector3 center1; private Vector3 t; public GameObject cude; private void Start() { WebCamDevice[] devices = WebCamTexture.devices; _webcamTexture = new WebCamTexture(devices[0].name, this._width, this._height, this._fps); _webcamTexture.Play(); } void OnDestroy() { if (_webcamTexture != null) { if (_webcamTexture.isPlaying) _webcamTexture.Stop(); _webcamTexture = null; } } private void Update() => Armaker(_webcamTexture); private void Armaker(WebCamTexture tex) { ar_dict = CvAruco.GetPredefinedDictionary(dictName); detect_param = DetectorParameters.Create(); Mat cam_frame = OpenCvSharp.Unity.TextureToMat(tex); Point2f[][] corners; //ARマーカのカドの座標 int[] ids; //検出されたARマーカのID Point2f[][] reject_Points; Mat grayMat = new Mat(); Cv2.CvtColor(cam_frame, grayMat, ColorConversionCodes.BGR2GRAY); CvAruco.DetectMarkers(cam_frame, grayMat, ar_dict, out corners, out ids, detect_param, out reject_Points); if (ids.Length != 0) { List<Point2f> midllePoints = new List<Point2f>(); List<Point2f> center = new List<Point2f>(); CvAruco.DrawDetectedMarkers(cam_frame, corners, ids, new Scalar(0, 255, 0)); var markers = Enumerable.Zip(ids, corners, (i, c) => new { i, c }) .ToDictionary(x => x.i, x => x.c) .OrderBy(i => i.Key); int cnt = 0; foreach (var marker in markers) { var average_X = marker.Value.Average(p => p.X); var average_Y = marker.Value.Average(p => p.Y); // マーカーの中心座標を取得 midllePoints.Add(new Point2f(average_X, average_Y)); cnt++; } int cnt1 = 0; foreach (var t in midllePoints) { var average1_X = midllePoints[0].X + (midllePoints[1].X - midllePoints[0].X) / 2; var average1_Y = midllePoints[0].Y + (midllePoints[1].Y - midllePoints[0].Y) / 2; center.Add(new Point2f(average1_X, average1_Y)); cnt1++; } // マーカーの中心座標を描画 midllePoints.ForEach(mp => cam_frame.Circle( (int)mp.X, (int)mp.Y, 1, new Scalar(0, 0, 255), 3, LineTypes.AntiAlias)); // マーカー間の中心点を描画 center.ForEach(tc => cam_frame.Circle( (int)tc.X, (int)tc.Y, 1, new Scalar(0, 255, 255), 5, LineTypes.AntiAlias)); foreach (var c in center) { t = new Vector3(center[0].X, center[0].Y, 0); cude.transform.position = t; } } _renderer.texture = OpenCvSharp.Unity.MatToTexture(cam_frame); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。