2015年10月19日 星期一

OpenCV 3.0 與 Visual Studio 2013(vc12)環境設定

當新增一個project後可以依照下列所示設定OpenCV 3.0環境設定。

1. 使用滑鼠點選計畫名稱後按"滑鼠右鍵" > "屬性(R)"。

 2. 選擇"組態屬性" > "C/C++" > "一般",在"其他Include目錄"中輸入OpenCV 3.0函示庫路徑,我這裡輸入"C:\opencv\bulid\include"。

3. 設定Link參數,選擇"組態屬性" > "連結器" > "一般",在"其他程式庫目錄"中輸入lib路徑,我這裡選擇支援x86架構與Visual Studio 2013的路徑,輸入"C:\opencv\build\x86\cv12\lib"。

**如果是Visual Studio 2012就選擇vc11的路徑。

4.  設定Link參數,選擇"組態屬性" > "連結器" > "輸入",在"其他相依性"中加入"opencv_world300d.lib"。

5. 最後至安裝OpenCV 3.0的路徑中"C:\opencv\build\x86\vc12\bin"將"opencv_world300d.dll"複製到project 您所開發的原始程式相同路徑下,設定完成就可以撰寫程式,按下"建置"按鈕編譯程式了。

**如果是Visual Studio 2012就選擇vc11\bin的路徑,將"opencv_world300d.dll"複製到project\Debug路徑下

2015年10月17日 星期六

Open CV (5) 使用Windows Form - PictureBox 顯示影像

pictureBox顯示影像

1. 在視窗中增加 PictureBox、Button、Timer控制項,之後再使用滑鼠快按兩下"button1"。

2. 輸入範例程式,最後按"開始偵錯"按鈕進行編譯。

stdafx.h


1
2
#include <cv.h>
#include <highgui.h>

Form1.h

1
2
3
4
5
6
7
8
9
10
11
12
13
namespace test {
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace cv; //add source code
    CvCapture* capture; //add source code
    IplImage* frame; //add source code

1
2
3
4
5
6
7
8
9
10
11
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
             capture = cvCaptureFromCAM(0);
             timer1->Start();
         }
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
             frame = cvQueryFrame(capture);
             pictureBox1->Image = gcnew
                 Bitmap(frame->width,frame->height,frame->widthStep,
                 Imaging::PixelFormat::Format24bppRgb,(System::IntPtr) frame->imageData);
         }

3. 執行結果。


Emgu CV (4) Example2

pictureBox顯示原始圖、灰階圖、邊圓檢測圖。

1. 輸入範例程式,最後按"開始偵錯"按鈕進行編譯。
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
 
namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            var dialog = new OpenFileDialog();
            dialog.Filter = "photo(*.jpg/*.png/*.gif/*.bmp)|*.jpg;*.png;*.gif;*.bmp";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                var filename = dialog.FileName;
                Image<bgr, byte=""> My_Image = new Image<bgr, byte="">(filename);
                pictureBox1.BackgroundImage = My_Image.ToBitmap();
                Image<gray, byte=""> grayFrame = My_Image.Convert<gray, byte="">();
                pictureBox2.BackgroundImage = grayFrame.ToBitmap();
                pictureBox3.BackgroundImage = grayFrame.Canny(new Gray(100),  new Gray(60)).ToBitmap();
            }
        }
    }
}


2. 執行結果。