opencv在windows form顯示的問題

看板C_and_CPP (C/C++)作者 (距離...是妳經過我的時候)時間15年前 (2010/12/21 00:26), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, Gcc, Linux, ...) vc++ 額外使用到的庫(Library Used) (Ex: OpenGL, ...) opencv 小弟想在vc++2008的windows form中,顯示利用從opencv抓到的webcam畫面. 因為是要用picturebox秀出來,我知道要先將IplImage轉換成bmp的格式. 但是碰到一個問題,就是轉換的程序中,似乎耗費了很多的時間,導致畫面 十分緩慢. 我的目的只是想要在windows form中顯示抓到的webcam畫面,而不是另外跳出視窗畫面, 不知道除了利用轉換成bmp的格式顯示在picturebox外,是否還有其他不耗費資源的方式? 以下是我ipl轉換bmp的方式,是抓取每一點的RGB直,再重新貼在新的bmp上顯示 void IplImageToTBitmap(IplImage *img1,Bitmap^ bmp1)//img是輸入,bmp是秀出的圖 { int W,H; uchar Blue,Green,Red; H=img1->height; W=(img1->widthStep); bmp1 = gcnew Bitmap(W,H);//創建bmp的長寬大小跟img一樣大 int r,g,b,a; for(int j=0;j<img1->height;j=j+1) { for(int i=0;i<img1->widthStep;i=i+3) { Blue=img1->imageData[j*img1->widthStep+i];//抓取img的RGB值 Green=img1->imageData[j*img1->widthStep+i+1]; Red=img1->imageData[j*img1->widthStep+i+2]; Color pixelColor = bmp1->GetPixel(i/3, j); r=Red; g=Green; b=Blue; a=pixelColor.A; Color newColor = Color::FromArgb(255, r, g, b);//複製Img的rgb值 bmp1->SetPixel((i/3), j, newColor); //到bmp上面 } } pictureBox1->Image = bmp1; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.201.62

12/21 01:51, , 1F
當然有. openCV的說明書不是都寫得清清楚楚的?
12/21 01:51, 1F

12/21 02:02, , 2F
Hi, 會慢是因為過多的函式存取造成資源重複損耗
12/21 02:02, 2F

12/21 02:03, , 3F
你要用BitmapData跟Lock()去直接存取Bitmap結構
12/21 02:03, 3F

12/21 02:03, , 4F
而不要使用GetPixel()以及SetPixel()
12/21 02:03, 4F
文章代碼(AID): #1D3uE-C- (C_and_CPP)
文章代碼(AID): #1D3uE-C- (C_and_CPP)