嗚嗚喔學習筆記: 八月 2013

搜尋此網誌

2013年8月12日 星期一

C++標頭檔使用

C++標頭檔使用範例

共分三個檔案 "Header.cpp" , "Header.h" , "Source.cpp"

"Source.cpp" 程式碼 :

#include <iostream>
#include "Header.h"
using namespace std ;

int main()
{
fun01();
system("pause");//暫停
return 0 ;
}
------------------------------------------------
"Header.h" 程式碼 :
#include <iostream>
#inculde <string>
using namespace std ;
void fun01();
------------------------------------------------
"Header.cpp" 程式碼 :


#include "Header.h"

void fun01()
{
cout<<"fun01()"<<endl;
}
------------------------------------------------
輸出結果:


-------------------------------------------------

如同範例 
Header.h      ->只存函式名稱 
Header.cpp   ->存函式內容 當然也需要 include 所有函式需要的庫
Source.cpp    ->只要include "Header.h" 就能使用標頭檔裡面所有函式了



2013年8月7日 星期三

[OpenCV] Visual Studio 2012 安裝 OpenCV 2.4.6

在常常一的字設定錯誤就會失敗的環境開發中詳細記錄安裝流程是非常必要的!
雖然2010 跟 2012 的相容性方面 蠻麻煩的有BUG但2012起碼界面看來舒暢許多

下面詳細記下安裝 "VC++ 2012 && opencv 2.4.6" 的詳細安裝過程 ::

下載點:

1.Microsoft Visual Studio Express 2012 for Windows Desktop
http://www.microsoft.com/visualstudio/cht/products/visual-studio-express-for-windows-desktop
2. OpenCV2.4.6
http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.6/OpenCV-2.4.6.0.exe/download

安裝步驟:

-----------------------------------------------------------------
SETP 1
解壓縮OpenCV2.4.6 到路徑 "C:\OpenCV246" 
-----------------------------------------------------------------
SETP 2
點選(開始)->(對電腦按右鍵)->(內容)->(變更設定)->(進階)->(環境變數)->(使用者變數)->(新增)
變數名稱 
path
變數值  
C:\OpenCV246\build;C:\OpenCV246\build\x86\vc10\bin;

-----------------------------------------------------------------
SETP 3
在 Visual Studio 2012 中建立 VC++ Win32 主控台應用程式
應用程式設定->其它選項->空專案(勾選)->完成

-----------------------------------------------------------------
SETP 4:點選 專案->屬性->VC++ 目錄 設定
Include 目錄:
C:\OpenCV246\build\include;C:\OpenCV246\build\include\opencv;
程式庫目錄
C:\OpenCV246\build\x86\vc10\lib;

-----------------------------------------------------------------
SETP 5:點選 專案->屬性->連結器->輸入 設定
其他相依性:
opencv_core246d.lib
opencv_calib3d246d.lib
opencv_contrib246d.lib
opencv_features2d246d.lib
opencv_highgui246d.lib
opencv_imgproc246d.lib

-----------------------------------------------------------------
SETP 6:重新開機

2013年8月2日 星期五

OPENCV[訪問矩陣練習]{cvGet2D(),cvSet2D()}

重點:
cvGet2D(img,y,x).val[2] ---> img (x,y)位置的 R 值(0~255)
cvGet2D(img,y,x).val[1] ---> img(x,y)位置的 G 值(0~255)
cvGet2D(img,y,x).val[0] ---> img(x,y)位置的 B 值(0~255)


cvSet2D(img,y,x,CV_RGB(255,255,255));--->把img(x,y)位置的RGB值改為( 255, 255 ,255)

程式碼:

#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <iostream>
using namespace std ;

int main( int argc, char **argv )
{


IplImage *img01;
    CvSize imgsize01 = cvSize(300,300);  // 給圖像SIZE
    img01 = cvCreateImage(imgsize01,IPL_DEPTH_8U,3);//創造img01

int Height=cvGetDimSize(img01,0);//讀取矩陣高度
    int Width=cvGetDimSize(img01,1);//讀取矩陣寬度

//這裡先給img01全白
for(int y = 0 ; y < Height ; y++)
for(int x = 0 ; x < Width ; x++ )
cvSet2D(img01,y,x,CV_RGB(255,255,255));//特別注意 給值是 (y,x)

for(int y = 0 ;y < Width ; y++)
   cvSet2D(img01,y,10,CV_RGB(255,0,0));//特別注意 給值是 (y,x)

for(int x = 0 ;x < Width ; x++)
   cvSet2D(img01,10,x,CV_RGB(0,255,0));//特別注意 給值是 (y,x)


cout<<"(10,100)R ="<<cvGet2D(img01, 100 , 10 ).val[2]<<endl;//試著讀取某個點的RGB值
cout<<"(10,100)G ="<<cvGet2D(img01, 100 , 10 ).val[1]<<endl;//特別注意是cvGet2D(img,y,x)
cout<<"(10,100)B ="<<cvGet2D(img01, 100 , 10 ).val[0]<<endl;//所以在輸入XY時 X 和 Y 要對調


cvNamedWindow("img01",CV_WINDOW_AUTOSIZE);
cvShowImage("img01", img01);
//輸出img01




cvWaitKey(0);
cvReleaseImage(&img01);
cvDestroyAllWindows();
return 0;
}
輸出結果: