Skip to content

Commit a491b1d

Browse files
committed
update 1.0.9
1 parent 1124537 commit a491b1d

File tree

6 files changed

+61
-13
lines changed

6 files changed

+61
-13
lines changed

Assets/MarkerLessARExample/CapturePattern.cs

+7
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,13 @@ public void OnCaptureButtonClick()
247247
{
248248
Mat patternMat = new Mat(outputMat, patternRect);
249249

250+
detector.detect(patternMat, keypoints);
251+
if (keypoints.total() == 0)
252+
{
253+
Debug.LogWarning("Input image could not be used as pattern image due to missing keypoints.");
254+
return;
255+
}
256+
250257
Texture2D patternTexture = new Texture2D(patternMat.width(), patternMat.height(), TextureFormat.RGBA32, false);
251258

252259
Utils.matToTexture2D(patternMat, patternTexture);

Assets/MarkerLessARExample/MarkerLessAR/PatternDetector.cs

+9-4
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using OpenCVForUnity.Features2dModule;
44
using OpenCVForUnity.ImgprocModule;
55
using System.Collections.Generic;
6+
using UnityEngine;
67

78
namespace OpenCVMarkerLessAR
89
{
@@ -157,7 +158,7 @@ public void train(Pattern pattern)
157158
/// </summary>
158159
/// <param name="image">Image.</param>
159160
/// <param name="pattern">Pattern.</param>
160-
public void buildPatternFromImage(Mat image, Pattern pattern)
161+
public bool buildPatternFromImage(Mat image, Pattern pattern)
161162
{
162163
//int numImages = 4;
163164
//float step = Mathf.Sqrt (2.0f);
@@ -201,7 +202,7 @@ public void buildPatternFromImage(Mat image, Pattern pattern)
201202
pattern.points3d.fromList(points3dList);
202203

203204

204-
extractFeatures(pattern.grayImg, pattern.keypoints, pattern.descriptors);
205+
return extractFeatures(pattern.grayImg, pattern.keypoints, pattern.descriptors);
205206
}
206207

207208
/// <summary>
@@ -216,7 +217,9 @@ public bool findPattern(Mat image, PatternTrackingInfo info)
216217
getGray(image, m_grayImg);
217218

218219
// Extract feature points from input gray image
219-
extractFeatures(m_grayImg, m_queryKeypoints, m_queryDescriptors);
220+
bool result = extractFeatures(m_grayImg, m_queryKeypoints, m_queryDescriptors);
221+
if (!result)
222+
return false;
220223

221224
// Get matches with current pattern
222225
getMatches(m_queryDescriptors, m_matches);
@@ -251,7 +254,9 @@ public bool findPattern(Mat image, PatternTrackingInfo info)
251254
using (MatOfDMatch refinedMatches = new MatOfDMatch())
252255
{
253256
// Detect features on warped image
254-
extractFeatures(m_warpedImg, warpedKeypoints, m_queryDescriptors);
257+
result = extractFeatures(m_warpedImg, warpedKeypoints, m_queryDescriptors);
258+
if (!result)
259+
return false;
255260

256261
// Match with pattern
257262
getMatches(m_queryDescriptors, refinedMatches);

Assets/MarkerLessARExample/ReadMe.pdf

1.82 KB
Binary file not shown.

Assets/MarkerLessARExample/Texture2DMarkerLessARExample/Texture2DMarkerLessARExample.cs

+8-4
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,16 @@ void Start()
153153

154154
PatternDetector patternDetector = new PatternDetector(null, null, null, true);
155155

156-
patternDetector.buildPatternFromImage(patternMat, pattern);
157-
patternDetector.train(pattern);
156+
bool patternFound = false;
157+
bool patternBuildSucceeded = patternDetector.buildPatternFromImage(patternMat, pattern);
158158

159+
Debug.Log("patternBuildSucceeded " + patternBuildSucceeded);
159160

160-
161-
bool patternFound = patternDetector.findPattern(imgMat, patternTrackingInfo);
161+
if (patternBuildSucceeded)
162+
{
163+
patternDetector.train(pattern);
164+
patternFound = patternDetector.findPattern(imgMat, patternTrackingInfo);
165+
}
162166

163167
Debug.Log("patternFound " + patternFound);
164168

Assets/MarkerLessARExample/WebCamTextureMarkerLessARExample/WebCamTextureMarkerLessARExample.cs

+35-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ namespace MarkerLessARExample
1818
[RequireComponent(typeof(WebCamTextureToMatHelper))]
1919
public class WebCamTextureMarkerLessARExample : MonoBehaviour
2020
{
21+
/// <summary>
22+
/// The pattern texture.
23+
/// </summary>
24+
public Texture2D patternTexture;
25+
2126
/// <summary>
2227
/// The pattern raw image.
2328
/// </summary>
@@ -83,6 +88,11 @@ public class WebCamTextureMarkerLessARExample : MonoBehaviour
8388
/// </summary>
8489
public GameObject video;
8590

91+
/// <summary>
92+
/// The CapturePattern Button.
93+
/// </summary>
94+
public Button CapturePatternButton;
95+
8696
/// <summary>
8797
/// The pattern mat.
8898
/// </summary>
@@ -152,9 +162,22 @@ void Start()
152162

153163
webCamTextureToMatHelper = gameObject.GetComponent<WebCamTextureToMatHelper>();
154164

155-
patternMat = Imgcodecs.imread(Application.persistentDataPath + "/patternImg.jpg");
156165

157-
if (patternMat.total() == 0)
166+
if (patternTexture != null)
167+
{
168+
patternMat = new Mat(patternTexture.height, patternTexture.width, CvType.CV_8UC3);
169+
Utils.texture2DToMat(patternTexture, patternMat);
170+
Imgproc.cvtColor(patternMat, patternMat, Imgproc.COLOR_RGB2BGR);
171+
Debug.Log("patternMat dst ToString " + patternMat.ToString());
172+
173+
CapturePatternButton.interactable = false;
174+
}
175+
else
176+
{
177+
patternMat = Imgcodecs.imread(Application.persistentDataPath + "/patternImg.jpg");
178+
}
179+
180+
if (patternMat == null || patternMat.total() == 0)
158181
{
159182
OnCapturePatternButtonClick();
160183
}
@@ -176,11 +199,18 @@ void Start()
176199

177200
patternDetector = new PatternDetector(null, null, null, true);
178201

179-
patternDetector.buildPatternFromImage(patternMat, pattern);
180-
patternDetector.train(pattern);
202+
bool patternBuildSucceeded = patternDetector.buildPatternFromImage(patternMat, pattern);
181203

204+
if (patternBuildSucceeded)
205+
{
206+
patternDetector.train(pattern);
182207

183-
webCamTextureToMatHelper.Initialize();
208+
webCamTextureToMatHelper.Initialize();
209+
}
210+
else
211+
{
212+
Debug.LogError("Input image could not be used as pattern image due to missing keypoints.");
213+
}
184214
}
185215
}
186216

Assets/MarkerLessARExample/WebCamTextureMarkerLessARExample/WebCamTextureMarkerLessARExample.unity

+2
Original file line numberDiff line numberDiff line change
@@ -2584,6 +2584,7 @@ MonoBehaviour:
25842584
m_Script: {fileID: 11500000, guid: 22005a6c954e9d24585ceafd5dfb3dc0, type: 3}
25852585
m_Name:
25862586
m_EditorClassIdentifier:
2587+
patternTexture: {fileID: 0}
25872588
patternRawImage: {fileID: 1756129323}
25882589
ARGameObject: {fileID: 1586187710}
25892590
ARCamera: {fileID: 2069525336}
@@ -2597,6 +2598,7 @@ MonoBehaviour:
25972598
displayVideo: 0
25982599
displayVideoToggle: {fileID: 1977600973}
25992600
video: {fileID: 1522842811}
2601+
CapturePatternButton: {fileID: 909783135}
26002602
--- !u!114 &1499518484
26012603
MonoBehaviour:
26022604
m_ObjectHideFlags: 0

0 commit comments

Comments
 (0)