[問題] 關於OpenCV

看板Programming作者 (妹妹)時間17年前 (2008/03/13 21:02), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/2 (看更多)
※ [本文轉錄自 C_and_CPP 看板] 作者: freestylelin (妹妹) 看板: C_and_CPP 標題: [問題] 關於OpenCV 時間: Thu Mar 13 18:16:49 2008 最近由於專題老師教我寫關於視訊監控的程式 小弟是OpenCV 的新手 下面是我練習圖形轉灰階的程式碼 遊請各位高手幫我解釋紅色區域所執行的到底是什麼? / GrayLevel.cpp : 定義主控台應用程式的進入點。 // #include "stdafx.h" #include <cv.h> #include <highgui.h> #include <stdio.h> void GraylevelImage(IplImage* Image) { int i,j,r,g,b,h,w,gray; h=Image->height; w=Image->width; for(i=0;i<h;i++) { for(j=0;j<w;j++) { r=((uchar*)(Image->imageData + Image->widthStep * i))[j*3+2]; g=((uchar*)(Image->imageData + Image->widthStep * i))[j*3+1]; b=((uchar*)(Image->imageData + Image->widthStep * i))[j*3+0]; gray=(r*76+g*150+b*29)>>8; ((uchar*)(Image->imageData + Image->widthStep * i))[j*3+2]=gray; ((uchar*)(Image->imageData + Image->widthStep * i))[j*3+1]=gray; ((uchar*)(Image->imageData + Image->widthStep * i))[j*3+0]=gray; } } return; } int main() { IplImage* pImage = cvLoadImage("艾斯.jpg",1); IplImage* pImage2; pImage2=cvCreateImage(cvGetSize(pImage),pImage->depth,pImage->nChannels); cvCopy(pImage,pImage2,NULL); GraylevelImage(pImage2); cvSaveImage("test1.jpg",pImage2); cvNamedWindow("TEST"); cvShowImage("TEST",pImage2); cvWaitKey(); cvDestroyWindow("TEST"); cvReleaseImage(&pImage2); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.88.33

03/13 20:36,
Image->ImgageData //圖片內容 好像是Bitmap
03/13 20:36
※ 編輯: freestylelin 來自: 220.139.88.33 (03/13 20:59) ※ 編輯: freestylelin 來自: 220.139.88.33 (03/13 21:00)

03/13 21:00,
還是有點模糊~~可以再清楚一點嗎?抱歉
03/13 21:00
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.88.33 ※ 編輯: freestylelin 來自: 220.139.88.33 (03/13 21:03)

03/16 10:28, , 1F
那邊指的是RGB的數值 0~255 分別填進
03/16 10:28, 1F

03/16 10:29, , 2F
去一個32 bits or 24 bits的array
03/16 10:29, 2F

03/16 10:30, , 3F
而灰階顯示則是只有 0~255 的單一數值
03/16 10:30, 3F

03/16 10:30, , 4F
所以後面RGB的array變成=>三個都是GRAY
03/16 10:30, 4F
文章代碼(AID): #17sIN-5e (Programming)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 2 篇):
文章代碼(AID): #17sIN-5e (Programming)