找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人尊貴會員無限看帖不用回覆安全提問(回答) 和 永久尊貴會員 事宜
上原亞衣流出ge中文按摩國中
fc2 ppv 七瀬アリ見つけたssr 095偷拍虜ノ侵略のモ

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]關於我轉生變成史

城管沒收百姓烤爐 結

[繁]轉生貴族憑鑑定技

快艇正妹豪乳吸睛

(4月新番)[繁]為美好

✡ 斗破蒼穹 年番/鬥
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2320|回復: 8
打印上一主題下一主題

[問題]用cvGetImage得到圖像後,存檔會錯,怎麼辦?(devC++&OpenCV)[複製鏈接]

帖子
0
積分
0 點
潛水值
930 米
跳轉到指定樓層
樓主
發表於 2010-3-16 09:44 PM|只看該作者|倒序瀏覽
本帖最後由 ab78910 於 2010-3-17 05:52 PM 編輯

char s1[20] = {0};
CvMat *x = cvCreateMat(180, 160, CV_32FC1);
CvSize Size = cvSize(160,180);
IplImage* Img11 = cvCreateImage(Size,IPL_DEPTH_32F,1);
           。
           。
           。
cvGetImage(x, Img11);
sprintf(s1, "20.jpg");
...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
分享分享0收藏收藏0支持支持0
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
1061
積分
1327 點
潛水值
4415 米
頭香
發表於 2010-3-18 01:13 AM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
此處色彩格式不能為浮點數。
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

帖子
0
積分
0 點
潛水值
930 米
3
發表於 2010-3-18 07:55 AM|只看該作者
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
喔喔 是要改成下面這樣嗎?
CvMat *x = cvCreateMat(180, 160, CV_8UC1);
IplImage* Img11 = cvCreateImage(Size,IPL_DEPTH_8U,1);

不過這樣改還是會錯耶@@

麻煩大大指教了~~~
若瀏覽伊莉的時侯發生問題或不正常情況,請使用Internet Explorer(I.E)。

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
1061
積分
1327 點
潛水值
4415 米
4
發表於 2010-3-18 10:34 AM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
「此處」是指存成 jpg 時。
矩陣運算用 F 較正常,存檔前再轉 8U 即可。

你先確定 Img11 是否可正確秀出,若可,再存檔。
若格式錯誤,就要檢查色彩、channel數 是否合宜。

照片變亮:初學時,建議自己寫,做個鍛鍊。
把 RGB 分別加上等值,並注意不超過 255。
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

帖子
0
積分
0 點
潛水值
930 米
5
發表於 2010-3-18 05:15 PM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
本帖最後由 ab78910 於 2010-3-18 05:19 PM 編輯

感謝您,加亮照片我懂了!

關於存檔,您的意思是說IplImage 那的Img1弄成8U就好嗎,矩陣32F沒關西?

我弄了一個程式,請您幫我看看
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <cv.h>
  5. #include <highgui.h>
  6. #include <cvcam.h>
  7. char s1[20] = {0};

  8. int main(int argc, char *argv[])
  9. {
  10.     IplImage *Img1,*Img2;
  11.     CvMat *Mat = cvCreateMat(300, 400, CV_32FC1);
  12.     //CvMat *Mat2 = cvCreateMat(300, 400, CV_32FC1);
  13.     CvMat *Mat3 = cvCreateMat(300, 300, CV_32FC1);
  14.    
  15.     Img1  = cvLoadImage("1.jpg",0);
  16.     Img2 = cvCreateImage(cvSize(300, 300), IPL_DEPTH_8U, 1);
  17.    
  18.     cvGetMat(Img1,Mat);
  19.    
  20.     cvMulTransposed(Mat, Mat3, 0,NULL); //Mat*Mat的轉置放到Mat3
  21.    
  22.     cvGetImage(Mat3,Img2);
  23.    
  24.    
  25.     cvNamedWindow("1", 0);
  26.     cvResizeWindow("1", 400, 300);
  27.     cvMoveWindow("1",400,160);
  28.     cvShowImage("1", Img1);
  29.    
  30.     cvNamedWindow("2", 0);
  31.     cvResizeWindow("2", 400, 300);
  32.     cvMoveWindow("2",400,580);
  33.     cvShowImage("2", Img2);
  34.    
  35.     sprintf(s1, "2.jpg");
  36.     //cvSaveImage(s1, Img2);
  37.     sprintf(s1, "3.jpg");
  38.     cvSaveImage(s1, Img1);
  39.    
  40.     cvWaitKey(0);
  41.    
  42.     cvReleaseImage(&Img1);
  43.     cvDestroyWindow("1");
  44.     cvReleaseImage(&Img2);
  45.     cvDestroyWindow("2");
  46. }
複製代碼
我真正要做的跟這程式差不多,只是這運算比較少,

但是這樣寫也不行存檔耶@@ 圖是秀的出來。

您說若格式錯誤,就要檢查色彩、channel數 是否合宜,

是不是用cvGetImage後,還需要用函數cvSetXXX去設定照片的色彩、channel數??

以下是原圖,轉自昨日的網站:
...
瀏覽完整內容,請先 註冊登入會員





附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
1061
積分
1327 點
潛水值
4415 米
6
發表於 2010-3-19 11:53 PM|只看該作者
cvMulTransposed 後...
矩陣中數值範圍落差極大,可以硬轉成「溫差圖」去存檔,
但.. 你想由中看出什麼資訊呢?

前段改成這樣:
  1.     CvMat *Mat3 = cvCreateMat(300, 300, CV_32FC1);
  2.    
  3.     Img1  = cvLoadImage("d:/1.jpg",0);
  4.     Img2 = cvCreateImage(cvSize(300, 300), IPL_DEPTH_32F, 1);
  5.    
  6.     cvGetMat(Img1,Mat);
  7.    
  8.     cvMulTransposed(Mat, Mat3, 0,NULL); //Mat*Mat的轉置放到Mat3
  9.    
  10.     cvConvertScale(Mat3,Img2);
  11.     Img2->depth = 8;
  12.     Img2->nChannels = 4;
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com

使用道具檢舉

帖子
0
積分
0 點
潛水值
930 米
7
發表於 2010-3-20 09:45 AM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
本帖最後由 ab78910 於 2010-3-20 09:55 AM 編輯

因為我是要算特徵臉,所以會用到這樣的運算~

另外我上網查溫差圖,查不到耶,請問那是什麼東東~?

然後我照您說的將我的程式碼改成下面這樣:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <cv.h>
  5. #include <highgui.h>
  6. #include <cvcam.h>
  7. char s1[20] = {0};

  8. int main(int argc, char *argv[])
  9. {
  10.     IplImage *Img1,*Img2;
  11.     CvMat *Mat = cvCreateMat(300, 400, CV_32FC1);
  12.     CvMat *Mat3 = cvCreateMat(300, 300, CV_32FC1);
  13.    
  14.     Img1  = cvLoadImage("1.jpg",0);
  15.     Img2 = cvCreateImage(cvSize(300, 300), IPL_DEPTH_8U, 1);
  16.    
  17.     cvGetMat(Img1,Mat);

  18.     cvMulTransposed(Mat, Mat3, 0,NULL);
  19.    
  20.     cvGetImage(Mat3,Img2);
  21.    
  22.     cvConvertScale(Mat3, Img2);

  23.     Img2->depth = 8;

  24.     Img2->nChannels = 1;
  25.    
  26.     //cvGetImage(Mat3,Img2); //GetImage放這會錯
  27.    
  28.    
  29.     cvNamedWindow("1", 0);
  30.     cvResizeWindow("1", 400, 300);
  31.     cvMoveWindow("1",400,160);
  32.     cvShowImage("1", Img1);
  33.    
  34.     cvNamedWindow("2", 0);
  35.     cvResizeWindow("2", 400, 300);
  36.     cvMoveWindow("2",400,580);
  37.     cvShowImage("2", Img2);
  38.    
  39.     sprintf(s1, "2.jpg");
  40.     cvSaveImage(s1, Img2);
  41.     sprintf(s1, "3.jpg");
  42.     cvSaveImage(s1, Img1);
  43.    
  44.     cvWaitKey(0);
  45.    
  46.     cvReleaseImage(&Img1);
  47.     cvDestroyWindow("1");
  48.     cvReleaseImage(&Img2);
  49.     cvDestroyWindow("2");
  50. }
複製代碼
因為讀取後,圖轉成灰階的,所以我把nChannels改成=1

然後我發現只有把Img2->depth = 8;槓掉或把數值改32就不能存檔,應該就是這個影響能不能存檔的~

cvConvertScale(Mat3,Img2); & Img2->nChannels = 1; 槓掉都沒差

還有,程式碼加了您說的那些,圖顯示會不一樣~~

原圖(沒加您說的程式碼,此圖不能存檔@@):


加了後,nChannels=4時的圖:


nChannels = 1時的圖:
...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊

使用道具檢舉

Rank: 3Rank: 3Rank: 3

帖子
1061
積分
1327 點
潛水值
4415 米
8
發表於 2010-3-20 11:58 AM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
原圖過於「粗糙」,而 8U, Channel = 1 時,
祇能存 0~255 的數據,還要將最大值要壓到這段範圍中才對。

溫差圖是概念上的說法:
矩陣是抽象的代數運算,若要形象化成圖來觀察「性質」,
一般類比成高度地形圖,或是溫差圖 (越紅值越大)。
令 ' 為 transpose operator:
因對 A'A 做 transpose 後 = A'(A')' = A'A
故 mul transpose 後之「形象」,必呈對稱 (且為方陣)。
...
瀏覽完整內容,請先 註冊登入會員
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

帖子
0
積分
0 點
潛水值
930 米
9
發表於 2010-3-20 03:17 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
喔喔~

雖然還不是很懂,不過謝謝您!!

可是如果改變depth = 8的話

我算出來的東西就看不出是人臉了XD都是像電視的雜訊

看來寫程式還真是深奧阿.....QQ
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部