[問題] OpenCV 轉灰階卻無圖片

看板C_and_CPP (C/C++)作者 (800IM)時間14年前 (2012/04/09 20:17), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2010Pro x64 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCV 問題(Question): 轉換目的地 Image2 有視窗卻無圖片 餵入的資料(Input): jpg彩色圖片一張 預期的正確結果(Expected Output): Image2的視窗應該有一張灰階圖片 錯誤結果(Wrong Output): Image2的視窗一片灰 程式碼(Code):(請善用置底文網頁, 記得排版) IplImage *Image1, *Image2, *ImageMask; uchar B[450][600],G[450][600],R[450][600],Gary[450][600]; int main() { char FileName[10]="Yang.jpg"; Image1 = cvLoadImage(FileName,1); CvSize Image2Size=cvSize(450,600); Image2 = cvCreateImage(Image2Size,IPL_DEPTH_8U,3); cvShowImage("Show Yang Image",Image1); /*Load image RGB value*/ for(int y=0;y<Image1->height;y++){ for(int x=0;x<Image1->widthStep;x+=3){ B[x][(y/3)]=Image1->imageData[x*Image1->width]; G[x][(y/3)]=Image1->imageData[x*Image1->width+1]; R[x][(y/3)]=Image1->imageData[x*Image1->width+2]; } } /*Implment algorithms*/ for(int y=0;y<Image1->height;y++){ for(int x=0;x<Image1->width;x+=3){ Gary[x][y]=0.33*B[x][y]+0.33*G[x][y]+0.33*R[x][y]; B[x][y]=Gary[x][y]; G[x][y]=Gary[x][y]; R[x][y]=Gary[x][y]; } } /*Save Image*/ for(int y=0;y<Image1->height;y++){ for(int x=0;x<Image1->width;x+=3){ Image2->imageData[x*Image2->width]=B[x][(y/3)]; Image2->imageData[x*Image2->width+1]=G[x][(y/3)]; Image2->imageData[x*Image2->width+2]=R[x][(y/3)]; } } cvShowImage("Show Yang Gray Image",Image2); cvWaitKey(0); cvDestroyWindow("Show Image"); cvReleaseImage(&Image1); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.52.219

04/09 21:31, , 1F
在 access imag e的時候要用 widthStep 不是 width 喔
04/09 21:31, 1F

04/09 21:31, , 2F
然後 for 裡面是要用 width 不是用 widthStep
04/09 21:31, 2F

04/10 01:56, , 3F
為何不直接用 cvScalar 一次接完B,G,R ?
04/10 01:56, 3F

04/10 02:31, , 4F
http://ideone.com/jP3d3 gray+threshhold
04/10 02:31, 4F
文章代碼(AID): #1FWjDGy_ (C_and_CPP)
文章代碼(AID): #1FWjDGy_ (C_and_CPP)