青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

使用wxWidget中遇到的圖片存儲問題一二

1. 實驗室中CCD的實際色階為14位,獲取的原始圖像數據的每個值都存儲在一個字中,即存儲色階16位,也就是說最高兩位的數據一直為0,同時獲取的圖片信息僅僅是16色階的灰度圖,而采用wxWidget沒有辦法直接將16位的數值串保存為圖片格式,如tiff格式,那么如何將16位的數值串以圖片的形式進行保存呢?

    經過這么幾天的折騰總算是找到了一條解決的途徑,就是將16位的數值串轉化為8為的數值串,也許你會很快的想到這么一個方法,nValue*max(uint8)/max(uint16);用來表示轉化后的數值,不夠還是得考慮一下CCD的實際色階,由于是14位,因此可以采用這樣的方式nValue*max(uint8)/max(uint14);不過由于我們對于圖片的處理是直接對圖片的原始數據進行處理,而轉化只是圖片在顯示屏上顯示的前提步驟,采用上述的方式雖然能夠相對很準確的進行轉化,但是需要花費一定的計算量,而通過近似的轉化能夠更快的進行這個轉化過程,同時獲取得到的圖片依然具有較好的清晰度,下面細說一下我采用的方法:

   1: unsigned short nPicData16 = new unsigned short[nBufSize];   // nBufSize is the size to store pic
   2:  
   3: // to get the nPicData16
   4: // ..................
   5: // get the nPicData16
   6:  
   7: char *pcPicData8 = new char[nBufSize];
   8: for (size_t i = 0; i < nBufSize; ++i) {
   9:   pcPicData8[i] = (char)(nPicData16>>6);
  10: }
  11:  
  12:  

由于2^6在2^14中所占的比例較小因此可以采用這樣的近似的方法。(這種方法具體有什么作用或是缺陷還沒有細究,請各位看官給點看法

2. 順利將14位數值串轉化成為8為數值串后,嘗試的使用下列方式進行圖片保存,發現結果一片黑,數值都為0了:

   1: // 結果發現存儲得到的save.bmp圖是24b的
   2: wxBitmap bitmap(pcPicData8,1392,1040,8);
   3: bitmap.SaveFile(wxT("save.bmp"),wxBITMAP_TYPE_BMP);
   4:  

因此猜想wxWidget對直接獲取的數據串進行保存時采用的rgb的模式進行保存,可能只會保存為24字節格式的圖片,也就是想要將圖片顯示到屏幕上時,也應該采用24b的圖片。不過wxWidget對于圖片數據卻能夠讀取8位的圖片,但是再次采用上述的方式進行存儲時,變成了32字節的了,(各位大蝦知不知道有沒有方法能夠直接保存8位圖的呢)。

于是采用了將這個8位的數值串分別賦值給R,G,B,用這種方式實現灰度圖的創建,然后再進行保存,最終解決了問題。

   1: unsigned char *rgbData = new unsigned char[1392*1040*3];
   2: unsigned char *ptr1 = (unsigned char*) pcPicData8;
   3: unsigned char *ptr2 = rgbData;
   4: for (int i = 0; i < 1392*1040; ++i) {
   5:     *ptr2++ = *ptr1;   
   6:     *ptr2++ = *ptr1;
   7:     *ptr2++ = *ptr1++;
   8: }
   9: wxImage myImage(1392,1040,rgbData);
  10: myImage.SaveFile(wxT("save.bmp"),wxBITMAP_TYPE_BMP);

posted on 2012-06-26 17:51 鐘謝偉 閱讀(1977) 評論(12)  編輯 收藏 引用

評論

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 20:48 泡菜

貌似,wxWidget默認保存tiff為24位圖(色階8位)的

wxWidget底層調用的,子庫為LibTIFF---一個開源C庫;需要復雜實用,直接調用C API...不過這樣很麻煩的.一般24位圖足夠實用了啊?

文中提到的"實驗室中CCD的單個像素的分辨率為14位",有點沒理解?指色階14位,既32位圖么??看著有點暈  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 20:53 泡菜

上面回復有點錯誤,特別糾正下,應該這樣說:

文中提到的"實驗室中CCD的單個像素的分辨率為14位",有點沒理解?指色階14位,既42位圖么??看著有點暈

顯卡一般實際輸出為32位圖(24位圖上加了個透明通道,色階還是8位的),個別支持48位圖(色階16位),例如DP口,可這是通過抖動/差值實現的,沒啥實際意義  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 21:03 鐘謝偉

@泡菜
那個專有的名詞是dynamic range A/D——14bit,指的是模數轉換范圍,我理解可能表示實際色階(文中說成單個像素的分辨率了,用詞不夠專業,不好意思),而數據存儲中是以16位色階存儲,也就是說16位中最高的兩位一直是0,而這個ccd只能夠獲取灰度圖,也就是沒有RGB信息,而wxWidget中沒有簡單的直接保存8位灰度圖的方式,于是采用了文中說的方式。  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 21:29 泡菜

@鐘謝偉
把代碼變為下面這個看看,保存下來的圖是否還是黑色的南??

1: // 結果發現存儲得到的save.bmp圖是24b的
2: wxBitmap bitmap(pcPicData8,1392,1040);
3: bitmap.SaveFile(wxT("save.bmp"),wxBITMAP_TYPE_BMP);  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 21:34 鐘謝偉

@泡菜
是的,還是黑色的,嘗試過了的  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 21:58 泡菜

static char pcPicData8[]= { 255 ,255 ,255 ,255 ,31,
255,255,255,31,255,255,255,31,255,255,255,
31,255,255,255,31,255,255,255,31,255,255,
255,31,255,255,255,31,255,255,255,25,243,
255,255,19,249,255,255,7,252,255,255,15,254,
255,255,31,255,255,255,191,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,
255 };

wxBitmap bitmap(pcPicData8,32,32);
bitmap.SaveFile(wxT("save.bmp"),wxBITMAP_TYPE_BMP);

很久沒碰編程了,上面的代碼在wxWidget下是能正常生成,并保存的.說明你的pcPicData8轉化有問題,問題出在pcPicData8上.  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-26 22:24 泡菜

實驗室硬件CCD咋樣不清楚,整體代碼也沒看到,但感覺你對圖像色階的理解有點小問題;如果CCD是14位的(A/D),直接獲得的數據得通過轉換(抖動/插值)才能生成16位色階的圖片(48位圖).....大多軟件也不支持48位圖的.

tiff不太清楚,但bmp、JPG最高支持24位圖(8位色階),也是wxWidget默認支持的;PNG好像本身格式支持48位圖,可wxWidget默認也24位圖,實際上目前,在PC上還沒看到有完全支持48位圖形的程序.
  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-27 11:32 鐘謝偉

@泡菜
它是灰度圖,所以沒有48位之說。
你給出的例子是教程中的例子,能夠正常生成,不過pcPicData8的長度是128,而32*32=1024,對于它是怎么實現的感到困惑。也許采用的是補零??
另外我轉化存儲的數據上傳了  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-27 11:46 鐘謝偉

@泡菜
暈啊,不知道怎么上傳文件  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-27 13:09 泡菜

這是百度上,灰度圖像解釋:(針對RGB色彩空間來說)

完整的圖像,是由紅色綠色藍色三個通道組成的。紅色、綠色、藍色三個通道的縮覽圖都是以灰度顯示的。用不同的灰度色階來表示“ 紅,綠,藍”在圖像中的比重。通道中的純白,代表了該色光在此處為最高亮度,亮度級別是255。

俺在加點...8位色階數碼圖,實際上就是24位圖片(另一種表述方法),RGB三坐標,每個坐標軸,分為256個刻度.例如(255,0,255)表示品紅,(0,0,255)表示藍色.圖片上的每個像素點,就是這樣描述出來的.

RGB色彩空間,是以RGB三個坐標建立起的"立方體","灰度級"指"立方體"的對角線.灰度圖簡單點理解,可以簡單理解為,采用RGB色彩空間建立起來的圖形.
所以灰度圖,有48位圖(16位色階)的概念,只不過這個立方體相對8位色階,更大而已,每個坐標的刻度從256級別,變大為65536級(2的16次方),可以表現65536*65536*65536種顏色;相對于8位色階(24位圖),256*256*256種顏色多得多爾

給你個連接自己看,雖然講的不太詳細
http://baike.baidu.com/view/1184366.htm

你對某些概念的確沒搞清楚,不過只要想學就好辦...

最后一貼,最終問題還是要靠自己解決....:)
  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-27 22:03 泡菜

本來說不回帖了,可感覺還是有些東西有點不知所以然,就把wxWidget的英文文檔調出來看,發現俺上面的例子也有點理解錯誤

wxBitmap的其中一個構造函數為wxBitmap (const char bits[], int width, int height, int depth=1);英文說明
Creates a bitmap from the given array bits.
You should only use this function for monochrome bitmaps (depth 1) in portable programs: in this case the bits parameter should contain an XBM image.
For other bit depths, the behaviour is platform dependent: under Windows, the data is passed without any changes to the underlying CreateBitmap() API. Under other platforms, only monochrome bitmaps may be created using this constructor and wxImage should be used for creating colour bitmaps from static data.

其bits[]是XBM image,種基于ASCII編碼的圖像格式,不同于真彩色圖,沒采用RGB色彩空間,自然不能套用三原色的東西.
之前俺的例子是從一篇中文,文檔里提取的,他沒做詳細描述,俺想當然的引用了,有點誤導....俺承認 :(

特別提一下,wxImage,他的其中一個構造函數,wxImage (int width, int height, unsigned char *data, unsigned char *alpha, bool static_data=false);英文文檔描述
Creates an image from data in memory.
If static_data is false then the wxImage will take ownership of the data and free it afterwards. For this, it has to be allocated with malloc.
Parameters:
width Specifies the width of the image.
height Specifies the height of the image.
data A pointer to RGB data ------------注意是RGB
alpha A pointer to alpha-channel data
static_data Indicates if the data should be free'd after use

注意到他與上面wxBitmap構造函數聲明的不同了沒? 在wxImage這個上面用,自然沒問題

看樣遇見問題還是老老實實,求助英文文檔來的實際 :(

另,經過查文檔,確認,wxWidget默認生成圖像,的確是8位色階,24位真彩的哦  回復  更多評論   

# re: 使用wxWidget中遇到的圖片存儲問題一二 2012-06-28 09:32 鐘謝偉

@泡菜
額,一直看的是英文文檔,卻沒有深究,想當然了,汗顏。
  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

導航

統計

常用鏈接

留言簿(1)

隨筆檔案

IT網站

My Friends

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产69国产精品亚洲| 亚洲国产日韩欧美在线图片| 欧美成人一区在线| 久久精品亚洲精品| 久久婷婷麻豆| 欧美激情aaaa| 欧美视频日韩视频在线观看| 国产精品日韩欧美| 国产一区二区0| 最近看过的日韩成人| av成人免费在线观看| 先锋a资源在线看亚洲| 久久综合狠狠综合久久综合88| 尤物九九久久国产精品的分类| 美女视频一区免费观看| 欧美第一黄色网| 国产精品va在线| 在线精品国产欧美| 亚洲主播在线播放| 蜜臀久久99精品久久久久久9 | 最新精品在线| 日韩一区二区精品葵司在线| 亚洲欧美日本视频在线观看| 免费日韩一区二区| 国产精品户外野外| 亚洲国产另类久久精品| 亚洲男人第一网站| 亚洲国产成人在线播放| 性做久久久久久免费观看欧美| 亚洲人成在线观看网站高清| 中文网丁香综合网| 韩日午夜在线资源一区二区| 国产精品久久久爽爽爽麻豆色哟哟 | 久久精品国产久精国产一老狼| 亚洲精品中文字幕有码专区| 欧美在线观看视频在线| 欧美国产日韩视频| 国产主播一区二区三区四区| 一区二区久久久久久| 免费看亚洲片| 欧美在线观看日本一区| 国产精品久久久久久久久果冻传媒 | 亚洲三级毛片| 久久婷婷影院| 国产专区一区| 久久xxxx精品视频| 亚洲深夜福利在线| 国产精品草草| 国产精品99久久久久久人| 欧美二区视频| 老鸭窝91久久精品色噜噜导演| 久久久国产精品一区二区三区| 亚洲欧美日韩视频二区| 欧美乱妇高清无乱码| 亚洲国产影院| 欧美99在线视频观看| 久久看片网站| 在线电影欧美日韩一区二区私密| 日韩视频免费在线观看| 久久婷婷av| 久久字幕精品一区| 亚洲精品一区二区三区99| 欧美黄色视屏| 欧美激情一区二区三区高清视频| 欧美日韩伦理在线免费| 亚洲欧洲在线一区| 亚洲欧洲日本一区二区三区| 欧美成人午夜免费视在线看片| 欧美日韩一区在线观看视频| 日韩一区二区久久| 一区二区三区成人| 国产精品九九久久久久久久| 亚洲欧美欧美一区二区三区| 亚洲一区二区三区中文字幕| 国产精品自拍在线| 另类欧美日韩国产在线| 欧美jjzz| 午夜精品视频在线| 久久国产精品黑丝| 日韩一区二区高清| 亚洲欧美日韩成人高清在线一区| 欧美国产精品日韩| 亚洲一区二区日本| 亚洲网站在线观看| 亚洲日本精品国产第一区| 亚洲激情图片小说视频| 欧美午夜视频在线| 另类亚洲自拍| 欧美成人免费在线| 亚洲在线一区二区三区| 久久九九99视频| 99视频有精品| 久久精品日产第一区二区| 一区二区欧美视频| 久久久成人网| 亚洲欧美日韩一区| 欧美成人精品福利| 欧美伊人久久大香线蕉综合69| 亚洲精品在线观看免费| 国产欧美精品日韩| 亚洲久久一区| 激情自拍一区| 一区二区精品在线观看| 亚洲国产精品久久久久秋霞蜜臀 | 久久精品青青大伊人av| 亚洲精品乱码久久久久| 夜夜嗨一区二区| 亚洲高清免费在线| 亚洲视频精品| 9色精品在线| 久色婷婷小香蕉久久| 欧美一区二区视频免费观看| 欧美精品成人91久久久久久久| 日韩视频精品| 久久爱www| 欧美一级播放| 欧美激情精品久久久久久久变态| 伊人成人开心激情综合网| 亚洲三级电影在线观看| 亚洲国产另类久久久精品极度| 欧美国产日韩一区二区| 国产日韩精品视频一区二区三区| 篠田优中文在线播放第一区| 欧美99在线视频观看| 久久久久这里只有精品| 国产三区精品| 午夜精品久久久久久久99水蜜桃 | 亚洲欧洲一区二区三区久久| 小黄鸭精品密入口导航| 欧美一区久久| 国产精品自在在线| 亚洲欧洲av一区二区三区久久| 国产欧美在线观看| 日韩一区二区免费高清| 亚洲私人影院在线观看| 欧美大片91| 亚洲黑丝在线| 在线一区二区三区做爰视频网站| 日韩香蕉视频| 亚洲一区www| 国产精品欧美日韩一区二区| 一区二区日本视频| 国产精品av久久久久久麻豆网| 国产一区视频网站| 亚洲图中文字幕| 午夜在线播放视频欧美| 国产欧美日韩精品a在线观看| 欧美高清视频| 亚洲电影下载| 欧美日本乱大交xxxxx| 在线视频一区二区| 久久不见久久见免费视频1| 国产精品青草综合久久久久99| 麻豆成人精品| 亚洲国产精品成人久久综合一区| 亚洲乱码精品一二三四区日韩在线| 国产精品国产三级国产aⅴ无密码| 久久精品国产欧美激情| 国产老女人精品毛片久久| 欧美伊人精品成人久久综合97| 在线一区二区三区四区| 国产精品日韩精品欧美精品| 久久精品国产亚洲精品| 欧美成人免费观看| 亚洲天天影视| 国产日韩精品入口| 老色批av在线精品| 99视频日韩| 免费成人小视频| 亚洲一区综合| 亚洲国产精品一区二区第一页| 亚洲欧美在线播放| 老司机亚洲精品| 亚洲一区二区三区久久| 国产亚洲欧美另类一区二区三区| 国产精品99久久不卡二区| 久久久激情视频| aa级大片欧美| 在线日韩一区二区| 国产欧美精品一区| 欧美日韩另类视频| 久久久久久成人| 亚洲一区精彩视频| 最近中文字幕mv在线一区二区三区四区 | 欧美中文字幕在线视频| 欧美激情国产日韩精品一区18| 国外视频精品毛片| 欧美女主播在线| 久久阴道视频| 性亚洲最疯狂xxxx高清| 亚洲精品日韩在线观看| 美脚丝袜一区二区三区在线观看 | 久久一区二区精品| 亚洲永久在线观看| 99精品欧美一区二区三区| 国产一区二区高清不卡| 国产精品成人播放| 欧美精品亚洲二区| 欧美成人中文| 欧美韩日视频|