[問題] openCV pixel值有誤差

看板C_and_CPP (C/C++)作者 (code)時間13年前 (2012/11/30 13:59), 編輯推噓3(308)
留言11則, 2人參與, 最新討論串1/1
在使用openCV的CvScalar寫入pixel value時 我用以下方式 for(int i = 0; i < height;i++) for(int j = 0; j < width; j++){ s = cvGet2D(img,i,j); // get the (i,j) pixel value if(s.val[0]==0) { cvSet2D(img1,i,j,cvScalar(0,0,0)); cvSet2D(img2,i,j,cvScalar(255,255,255)); } else { cvSet2D(img1,i,j,cvScalar(255,255,255)); cvSet2D(img2,i,j,cvScalar(0,0,)); } } img是input image,img1 img2是輸出的image 最後用cvSaveImage儲存 img1 img2 而當我把輸出的影像pixel值讀出來檢查 s=cvGet2D(img1,i,j); // get the (i,j) pixel value printf("%f %f %f \n",s.val[0],s.val[1],s.val[2]); 卻發現pixel值有誤差,照理說所有的值都必須全為 (0,0,0)或者(255,255,255) 但是卻發現有 253, 254 或者 1, 2這種奇怪的值 請問這個問題該如何解決? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.108 ※ 編輯: TNC 來自: 140.112.25.108 (11/30 14:00)

11/30 14:56, , 1F
"最後用cvSaveImage儲存 img1 img2"
11/30 14:56, 1F

11/30 14:57, , 2F
你是存到硬碟再讀出來,還是直接在程式裡的記憶體讀?
11/30 14:57, 2F

11/30 14:58, , 3F
如果是前者的話,你當時cvSaveImage的格式是什麼?
11/30 14:58, 3F

11/30 15:03, , 4F
格式都是 IplImage
11/30 15:03, 4F

11/30 15:04, , 5F
存到disk再讀出來
11/30 15:04, 5F

11/30 15:05, , 6F
cvSaveImage("...") 這裡面會寫出你要儲存的檔名跟副檔
11/30 15:05, 6F

11/30 15:06, , 7F
名. 看看你設定的副檔名是什麼.
11/30 15:06, 7F

11/30 15:10, , 8F
jpg
11/30 15:10, 8F

11/30 15:11, , 9F
跟我預想的一樣 是壓縮格式檔案
11/30 15:11, 9F

11/30 15:17, , 10F
喔喔!我懂了
11/30 15:17, 10F

11/30 15:17, , 11F
謝謝!
11/30 15:17, 11F
文章代碼(AID): #1Gk4iv0x (C_and_CPP)
文章代碼(AID): #1Gk4iv0x (C_and_CPP)