顯示具有 96360360 標籤的文章。 顯示所有文章
顯示具有 96360360 標籤的文章。 顯示所有文章

2009年9月16日 星期三

專研時間

老師我們MEETING時間是??

2009年7月14日 星期二

HW6-3

int main()
{
IplImage * img = NULL; //建立一IplImage之指標變數並設值為NULL
IplImage * pImage = NULL;
IplImage * pImgCanny = NULL;
IplImage * pImg8u = NULL;
IplImage * pImg8uSmooth = NULL;
img=cvLoadImage("img.jpg");//把圖片叫進來
pImage = cvCloneImage(img);//把img複製到pImage
pImg8u = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
//創造跟pImage一樣的大小深度為8無符號的圖
pImgCanny = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
pImg8uSmooth = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_8U,1);
cvCvtColor(pImage,pImg8u,CV_BGR2GRAY);//把pImage轉成灰階存放到pImg8u
cvSmooth(pImg8u,pImg8uSmooth,CV_GAUSSIAN,3,0,0);
cvCanny(pImg8uSmooth,pImgCanny,100,200,3);// 採用 Canny 演算法做邊緣檢測
cvConvertScaleAbs(pImgCanny,pImg8u,1,0);// 使用線性變換轉換輸入數組元素成8位無符號整型
cvvNamedWindow("Canny Image",1);// //視窗名稱為Canny Image
cvvShowImage("Canny Image",pImg8u);// 顯現出pImg8u的圖片
cvWaitKey(0);// 等待key按下之時間(<=0為無線等待)
cvDestroyWindow("Canny Image");//銷毀Canny Image之視窗
cvReleaseImage(& pImage);// 把pImage之圖片釋放
cvReleaseImage(& pImgCanny);// 把pImgCanny之圖片釋放
cvReleaseImage(& pImg8u);// 把pImg8u之圖片釋放
cvReleaseImage(& pImg8uSmooth);// 把pImg8uSmooth之圖片釋放
}

HW 6-7

#include

#include

#include "cv.h" // include core library interface

#include "highgui.h" // include GUI library interface

void CMainFrame::OnResize()

{ IplImage * img = NULL; //建立一IplImage之指標變數並設值為NULL

IplImage * pImage = NULL; //建立一IplImage之指標變數並設值為NULL

IplImage * pImgNew = NULL; //建立一IplImage之指標變數並設值為NULL img=cvLoadImage("img.jpg"); //img.jpg讀入圖片

pImage = cvCloneImage(img); //複製一份img

CFileDialog dlg(TRUE,_T("*.bmp"),"",OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,"image files(*.bmp;*.jpg)|*,bmp;*.jpg|AVI files(*.avi)|*.avi|All Files(*.*)|*.*||",NULL);

char title[]={"Open Image again"};

dlg.m_ofn.lpstrTitle = title;

if(dlg.DoModal() == IDOK)

{

imgfilepath = dlg.GetPathName();

if(pImgNew != 0)

cvReleaseImage(&pImgNew); ///pImaNew之圖片釋放

pImgNew = cvvLoadImage(imgfilepath); //載入第二幅圖像

cvvNamedWindow("Second Image",1); //創立並顯示第二幅圖象名稱為Second Image

cvvShowImage("Second Image",pImgNew); //顯現出pImgNew的圖片

/*cvv開頭的是highgui的函數。為了用ImageProcessor,將此頭文件包入對話框。一旦文件打開,一個ImageProcessor的實例即被創建*/

}

cvResize(pImage,pImgNew,CV_INTER_NN);

cvvNamedWindow("Resized Image",1); //創立視窗名稱為Resized Image

cvvShowImage("Resized Image",pImgNew); //顯現出pImgNew的圖片

cvWaitKey(0); //等待key按下之時間(<=0為無線等待)

cvReleaseImage(&pImage); //pImage之圖片釋放

cvReleaseImage(&pImgNew); //pImaNew之圖片釋放

cvDestroyWindow("Second Image"); //銷毀Second Image窗口

cvDestroyWindow("Resized Image"); //銷毀Resized Image窗口

}

void CMainFrame::OnRotation()

{

int angle = 30; //設定旋轉角度三十度

int opt = 0; //1加縮放 =0 僅旋轉

double factor; //宣告factor

IplImage * img = NULL; //建立一IplImage之指標變數並設值為NULL

IplImage * pImage = NULL; //建立一IplImage之指標變數並設值為NULL

IplImage * pImgRotation = NULL; //建立一IplImage之指標變數並設值為NULL

img=cvLoadImage("img.jpg"); //img.jpg讀入圖片

pImage = cvCloneImage(img); //複製一份img

pImgRotation = cvCloneImage(img); //複製一份img

float m[6]; //創立矩陣m

CvMat M = cvMat(2,3,CV_32F,m);

int w = img->width; //w指向長

int h = img->height; //h指向寬

if(opt==1) factor = (cos(angle * CV_PI/180.) + 1.0)*2; //旋轉+縮放

else factor = 1; //僅旋轉

//旋轉 x= rcos(θ+α)= rcosαcosθ- rsinθsinα

m[0] = (float)(factor * cos(-angle * CV_PI/180.));

m[1] = (float)(factor * sin(-angle * CV_PI/180.));

m[3] = -m[1];

m[4] = m[0];

m[2] = w*0.5f;

m[5] = h*0.5f;

//dst(x,y) = A * src(x,y) + b

cvZero(pImgRotation);

cvGetQuadrangleSubPix(pImage,pImgRotation,&M);

cvNamedWindow("Rotation Image",1); //創立視窗名稱為Rotation Image

cvShowImage("Rotation Image",pImgRotation); //顯示pImgRotation圖片

cvWaitKey(0); //等待key按下之時間(<=0為無線等待)

cvReleaseImage(&pImage); //pImage之圖片釋放

cvReleaseImage(&pImgRotation); //pImgRotation e之圖片釋放

cvDestroyWindow("Rotation Image"); //銷毀Rotation Image窗口

}

/*

(所使用之openCV函數):

1. cvCloneImage:複製一份image

2. cvCreatImage:創造一份image

3. cvCvtcolor:把輸入之圖片轉成灰階後輸出

4. cvvNamedWindow:創立視窗的名稱

5. cvvShowImage:秀出image

6. cvDestoryWindow:銷毀視窗

7. cvReleaseimage:釋放圖片

8. cvGetQuadrangleSubPix:從圖像中src提取四邊形,使用子精像度精度,將結果存於dst

*/

2009年7月1日 星期三

程式分配

96360103 姚智惟 第6個
96360226 程漢祥 第5個
96360360 徐亦鈞 第3個
96360422 劉邦星 第1個
96360705 陳譽介 第4個
96360830 陳鈺云 第7個
96360901 洪詩涵 第2個
96361035 紀辰融 第8個


我1~8程式碼打好了!
放在網路硬碟,
分享名稱:opencv_ch6
如果有錯自行更正吧!
看到眼睛都快花了!
哪裡有錯就留意見吧!
感恩!

2009年6月30日 星期二

各位同學看一下!

老師說的8個程式碼,
要怎麼分,
我想用random去跑!
分成1~8
順序由學號前面的開始排下來!
大家看一下用這方法分!
不然大家都不知道要哪段!
有問題的快留意見!
我7/2會排出來!
所以有問題的快回應!

2009年5月18日 星期一

介紹CV

http://www.opencv.org.cn/index.php/Cv图像处理#CvtColor