Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Lonsomehell · Mar 05, 2015 at 04:35 AM · imageopencv

Unity Opencv

Hi there, I spent the whole day looking for a way to get opencv to work with unity and I wasn't able to get it to work.Some people were able to get it to work successfully. So can anyone share the method he used or a sample project if he can upload it ?

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by unity_Fh_3Ok4CaXlg-w · Feb 27, 2019 at 08:20 AM

im using opencv with unity.there is an object following the movements of face detection circle on x,y,z axises.and i wanna prevent y,z axises and just move only for x axis here is the code;

using UnityEngine;

public class PositionAtFaceScreenSpace : MonoBehaviour { private float _camDistance;

void Start() { _camDistance = Vector3.Distance(Camera.main.transform.position, transform.position); }

void Update() { if (OpenCVFaceDetection.NormalizedFacePositions.Count == 0) return;

transform.position = Camera.main.ViewportToWorldPoint(new Vector3( OpenCVFaceDetection.NormalizedFacePositions[0].x, OpenCVFaceDetection.NormalizedFacePositions[0].y, OpenCVFaceDetection.NormalizedFacePositions[0].z)); } },how do i prevent y,z axises. i wanna move sphere only for x axis. here is the movement code. using UnityEngine;

public class PositionAtFaceScreenSpace : MonoBehaviour { private float _camDistance;

 void Start()
 {
     _camDistance = Vector3.Distance(Camera.main.transform.position, transform.position);
 }

 void Update()
 {
     if (OpenCVFaceDetection.NormalizedFacePositions.Count == 0)
         return;

     transform.position = Camera.main.ViewportToWorldPoint(new Vector3( OpenCVFaceDetection.NormalizedFacePositions[0].x, OpenCVFaceDetection.NormalizedFacePositions[0].x, OpenCVFaceDetection.NormalizedFacePositions[0].x));
 }

}

Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Bonfire-Boy · Feb 27, 2019 at 09:10 AM 0
Share

You should probably explain where you get OpenCVFaceDetection from. Without that, this won't help anyone.

avatar image unity_Fh_3Ok4CaXlg-w Bonfire-Boy · Feb 27, 2019 at 09:16 AM 0
Share

using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine;

public class OpenCVFaceDetection : $$anonymous$$onoBehaviour {

 public static List<Vector3> NormalizedFacePositions { get; private set; }
 public static Vector2 CameraResolution;

 public float DepthDevider = 10f;
 public float DepthAdder = 10f;

 private const int DetectionDownScale = 1;

 private bool _ready;
 private int _maxFaceDetectCount = 5;
 private CvCircle[] _faces;

 void Start()
 {
     int camWidth = 0, camHeight = 0;
     int result = OpenCVInterop.Init(ref camWidth, ref camHeight);
     if (result < 0)
     {
         if (result == -1)
         {
             Debug.LogWarningFormat("[{0}] Failed to find cascades definition.", GetType());
         }
         else if (result == -2)
         {
             Debug.LogWarningFormat("[{0}] Failed to open camera stream.", GetType());
         }

         return;
     }

     CameraResolution = new Vector2(camWidth, camHeight);
     _faces = new CvCircle[_maxFaceDetectCount];
     NormalizedFacePositions = new List<Vector3>();
     OpenCVInterop.SetScale(DetectionDownScale);
     _ready = true;
 }

 void OnApplicationQuit()
 {
     if (_ready)
     {
         OpenCVInterop.Close();
     }
 }

 void Update()

 {
     if (!_ready)
         return;

     int detectedFaceCount = 0;
     unsafe
     {
         fixed (CvCircle* outFaces = _faces)
         {
             OpenCVInterop.Detect(outFaces, _maxFaceDetectCount, ref detectedFaceCount);
         }
     }

     NormalizedFacePositions.Clear();
     for (int i = 0; i < detectedFaceCount; i++)
     {
         NormalizedFacePositions.Add(new Vector3((_faces[i].X * DetectionDownScale) / CameraResolution.x, 1f - ((_faces[i].Y * DetectionDownScale) / CameraResolution.y), 1f - (_faces[i].Radius*DetectionDownScale)/DepthDevider + DepthAdder));
     }
 }

}

internal static class OpenCVInterop { [DllImport("OpenCV$$anonymous$$Part2Try1")] internal static extern int Init(ref int outCameraWidth, ref int outCameraHeight);

 [DllImport("OpenCV$$anonymous$$Part2Try1")]
 internal static extern int Close();

 [DllImport("OpenCV$$anonymous$$Part2Try1")]
 internal static extern int SetScale(int downscale);

 [DllImport("OpenCV$$anonymous$$Part2Try1")]
 internal unsafe static extern void Detect(CvCircle* outFaces, int maxOutFacesCount, ref int outDetectedFacesCount);

}

[StructLayout(Layout$$anonymous$$ind.Sequential, Size = 12)] public struct CvCircle { public int X, Y, Radius; }

avatar image Bonfire-Boy unity_Fh_3Ok4CaXlg-w · Feb 27, 2019 at 09:26 AM 0
Share

So, it looks like you've compiled your own native DLL with some OpenCV functionality in it. Surely someone who can't get OpenCV working in Unity at all is going to need help with doing that. I can't see how showing them the unity code that uses the DLL is going to help.

Anyway, this question is 4 years old. These days there are quite a lot of helpful resources out there if someone just googles for Unity, using/compiling native DLLS, and OpenCV.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

how to crop image using opencv 1 Answer

Image Stitching without external libraries 0 Answers

Using of Texture2D.LoadImage 0 Answers

import video from camera 3 Answers

Image becomes distorted when running on IOS 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges