κ°œλ°œπŸ’»/OpenCVSharp

[OpenCVSharp] μ‚¬μ΄μ¦ˆκ°€ λ‹€λ₯Έ λ‘κ°œμ˜ λ™μ˜μƒ μ˜€λ²„λ ˆμ΄

VIP 2017. 2. 9. 09:58
728x90
λ°˜μ‘ν˜•

- 쑰건

1. VisualStudio 2015

2. OpenCVSharp 2.4.10


- μ°Έμ‘°λΆ€λΆ„




- μ†ŒμŠ€μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using OpenCvSharp;
using OpenCvSharp.CPlusPlus;
using OpenCvSharp.Extensions;
 
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        IplImage frame1, frame2;
 
        CvCapture capture1, capture2;
 
        IplImage resize1, resize2, resize3;
 
        int w, h;
        
        public Form1()
        {
            InitializeComponent();
 
            Video_Overlay();
        }
 
 
        public void Video_Overlay()
        {
            capture1 = CvCapture.FromFile("C://drop.avi");
            capture2 = CvCapture.FromFile("C://bird.avi");
 
            w = capture2.FrameWidth;
            h = capture2.FrameHeight;
 
            // capture2 μ˜μƒ μ‚¬μ΄μ¦ˆ ν†΅μΌ
            resize1 = Cv.CreateImage(Cv.Size(w, h), BitDepth.U8, 3);
            resize2 = Cv.CreateImage(Cv.Size(w, h), BitDepth.U8, 3);
            resize3 = Cv.CreateImage(Cv.Size(w, h), BitDepth.U8, 3);
            
            while (true)
            {
                frame1 = Cv.QueryFrame(capture1);
                frame2 = Cv.QueryFrame(capture2);
           
                if (frame1 == null)
                {
                    capture1 = CvCapture.FromFile("C://drop.avi");
                    continue;
                }
                if(frame2 == null)
                {
                    capture2 = CvCapture.FromFile("C://bird.avi");
                    continue;
                }
 
                Cv.Resize(frame1, resize1);
                Cv.Resize(frame2, resize2);
 
                Cv.Add(resize1, resize2, resize3, null);
 
                Cv.ShowImage("Test", resize3);
                if (Cv.WaitKey(33== 27)
                    break;
 
            }
 
            Cv.ReleaseCapture(capture1);
            Cv.ReleaseCapture(capture2);
            Cv.DestroyWindow("Test");
        }
    }
}
cs



- μ‚¬μ΄μ¦ˆκ°€ λ‹€λ₯Έ 두 개의 λ™μ˜μƒμ„ capture1, capture2에 μ €μž₯ν•œ ν›„, capture2에 μ €μž₯된 λ™μ˜μƒ μ‚¬μ΄μ¦ˆλ‘œ λ‘κ°œμ˜ λ™μ˜μƒ μ‚¬μ΄μ¦ˆλ₯Ό Resize ν•œλ‹€.

- λ™μ˜μƒ 좜λ ₯ μ‹œ, λ‘κ°œμ˜ λ™μ˜μƒ μž¬μƒ μ‹œκ°„μ΄ λ‹€λ₯΄λ―€λ‘œ Cv.Addμ—μ„œ Null μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€. λ”°λΌμ„œ 각 frame1, frame2에 μ €μž₯된 λ™μ˜μƒ μž¬μƒμ΄ λ‹€ λλ‚˜μ„œ null이 λ˜μ—ˆμ„ 경우 λ‹€μ‹œν•œλ²ˆ λ™μ˜μƒ νŒŒμΌμ„ μ˜€ν”ˆν•˜μ—¬ capture1, capture2 λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™” μ‹œμΌœμ€€λ‹€.


- κ²°κ³Όν™”λ©΄



좜처 : http://dsnight.tistory.com/20

λ™μ˜μƒ(avi) 좜처 : http://www.engr.colostate.edu/me/facil/dynamics/avis.htm

728x90
λ°˜μ‘ν˜•