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

使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二

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

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

   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中所占的比例較小因此可以采用這樣的近似的方法。(這種方法具體有什么作用或是缺陷還沒(méi)有細(xì)究,請(qǐng)各位看官給點(diǎn)看法

2. 順利將14位數(shù)值串轉(zhuǎn)化成為8為數(shù)值串后,嘗試的使用下列方式進(jìn)行圖片保存,發(fā)現(xiàn)結(jié)果一片黑,數(shù)值都為0了:

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

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

于是采用了將這個(gè)8位的數(shù)值串分別賦值給R,G,B,用這種方式實(shí)現(xiàn)灰度圖的創(chuàng)建,然后再進(jìn)行保存,最終解決了問(wèn)題。

   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 鐘謝偉 閱讀(1976) 評(píng)論(12)  編輯 收藏 引用

評(píng)論

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-26 20:48 泡菜

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

wxWidget底層調(diào)用的,子庫(kù)為L(zhǎng)ibTIFF---一個(gè)開(kāi)源C庫(kù);需要復(fù)雜實(shí)用,直接調(diào)用C API...不過(guò)這樣很麻煩的.一般24位圖足夠?qū)嵱昧税?

文中提到的"實(shí)驗(yàn)室中CCD的單個(gè)像素的分辨率為14位",有點(diǎn)沒(méi)理解?指色階14位,既32位圖么??看著有點(diǎn)暈  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-26 20:53 泡菜

上面回復(fù)有點(diǎn)錯(cuò)誤,特別糾正下,應(yīng)該這樣說(shuō):

文中提到的"實(shí)驗(yàn)室中CCD的單個(gè)像素的分辨率為14位",有點(diǎn)沒(méi)理解?指色階14位,既42位圖么??看著有點(diǎn)暈

顯卡一般實(shí)際輸出為32位圖(24位圖上加了個(gè)透明通道,色階還是8位的),個(gè)別支持48位圖(色階16位),例如DP口,可這是通過(guò)抖動(dòng)/差值實(shí)現(xiàn)的,沒(méi)啥實(shí)際意義  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-26 21:03 鐘謝偉

@泡菜
那個(gè)專有的名詞是dynamic range A/D——14bit,指的是模數(shù)轉(zhuǎn)換范圍,我理解可能表示實(shí)際色階(文中說(shuō)成單個(gè)像素的分辨率了,用詞不夠?qū)I(yè),不好意思),而數(shù)據(jù)存儲(chǔ)中是以16位色階存儲(chǔ),也就是說(shuō)16位中最高的兩位一直是0,而這個(gè)ccd只能夠獲取灰度圖,也就是沒(méi)有RGB信息,而wxWidget中沒(méi)有簡(jiǎn)單的直接保存8位灰度圖的方式,于是采用了文中說(shuō)的方式。  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-26 21:29 泡菜

@鐘謝偉
把代碼變?yōu)橄旅孢@個(gè)看看,保存下來(lái)的圖是否還是黑色的南??

1: // 結(jié)果發(fā)現(xiàn)存儲(chǔ)得到的save.bmp圖是24b的
2: wxBitmap bitmap(pcPicData8,1392,1040);
3: bitmap.SaveFile(wxT("save.bmp"),wxBITMAP_TYPE_BMP);  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-26 21:34 鐘謝偉

@泡菜
是的,還是黑色的,嘗試過(guò)了的  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 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);

很久沒(méi)碰編程了,上面的代碼在wxWidget下是能正常生成,并保存的.說(shuō)明你的pcPicData8轉(zhuǎn)化有問(wèn)題,問(wèn)題出在pcPicData8上.  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-26 22:24 泡菜

實(shí)驗(yàn)室硬件CCD咋樣不清楚,整體代碼也沒(méi)看到,但感覺(jué)你對(duì)圖像色階的理解有點(diǎn)小問(wèn)題;如果CCD是14位的(A/D),直接獲得的數(shù)據(jù)得通過(guò)轉(zhuǎn)換(抖動(dòng)/插值)才能生成16位色階的圖片(48位圖).....大多軟件也不支持48位圖的.

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

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-27 11:32 鐘謝偉

@泡菜
它是灰度圖,所以沒(méi)有48位之說(shuō)。
你給出的例子是教程中的例子,能夠正常生成,不過(guò)pcPicData8的長(zhǎng)度是128,而32*32=1024,對(duì)于它是怎么實(shí)現(xiàn)的感到困惑。也許采用的是補(bǔ)零??
另外我轉(zhuǎn)化存儲(chǔ)的數(shù)據(jù)上傳了  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-27 11:46 鐘謝偉

@泡菜
暈啊,不知道怎么上傳文件  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-27 13:09 泡菜

這是百度上,灰度圖像解釋:(針對(duì)RGB色彩空間來(lái)說(shuō))

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

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

RGB色彩空間,是以RGB三個(gè)坐標(biāo)建立起的"立方體","灰度級(jí)"指"立方體"的對(duì)角線.灰度圖簡(jiǎn)單點(diǎn)理解,可以簡(jiǎn)單理解為,采用RGB色彩空間建立起來(lái)的圖形.
所以灰度圖,有48位圖(16位色階)的概念,只不過(guò)這個(gè)立方體相對(duì)8位色階,更大而已,每個(gè)坐標(biāo)的刻度從256級(jí)別,變大為65536級(jí)(2的16次方),可以表現(xiàn)65536*65536*65536種顏色;相對(duì)于8位色階(24位圖),256*256*256種顏色多得多爾

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

你對(duì)某些概念的確沒(méi)搞清楚,不過(guò)只要想學(xué)就好辦...

最后一貼,最終問(wèn)題還是要靠自己解決....:)
  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-27 22:03 泡菜

本來(lái)說(shuō)不回帖了,可感覺(jué)還是有些東西有點(diǎn)不知所以然,就把wxWidget的英文文檔調(diào)出來(lái)看,發(fā)現(xiàn)俺上面的例子也有點(diǎn)理解錯(cuò)誤

wxBitmap的其中一個(gè)構(gòu)造函數(shù)為wxBitmap (const char bits[], int width, int height, int depth=1);英文說(shuō)明
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編碼的圖像格式,不同于真彩色圖,沒(méi)采用RGB色彩空間,自然不能套用三原色的東西.
之前俺的例子是從一篇中文,文檔里提取的,他沒(méi)做詳細(xì)描述,俺想當(dāng)然的引用了,有點(diǎn)誤導(dǎo)....俺承認(rèn) :(

特別提一下,wxImage,他的其中一個(gè)構(gòu)造函數(shù),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構(gòu)造函數(shù)聲明的不同了沒(méi)? 在wxImage這個(gè)上面用,自然沒(méi)問(wèn)題

看樣遇見(jiàn)問(wèn)題還是老老實(shí)實(shí),求助英文文檔來(lái)的實(shí)際 :(

另,經(jīng)過(guò)查文檔,確認(rèn),wxWidget默認(rèn)生成圖像,的確是8位色階,24位真彩的哦  回復(fù)  更多評(píng)論   

# re: 使用wxWidget中遇到的圖片存儲(chǔ)問(wèn)題一二 2012-06-28 09:32 鐘謝偉

@泡菜
額,一直看的是英文文檔,卻沒(méi)有深究,想當(dāng)然了,汗顏。
  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


<2012年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(1)

隨筆檔案

IT網(wǎng)站

My Friends

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品国产三级国产普通话99 | 亚洲主播在线播放| 欧美激情第五页| 免费看成人av| 欧美xart系列高清| 亚洲国产清纯| 亚洲国产三级网| 中国成人在线视频| 亚洲伊人伊色伊影伊综合网| 欧美伊人久久久久久午夜久久久久 | 欧美成人精品h版在线观看| 欧美不卡视频一区发布| 欧美精品久久99| 国产精品自拍网站| 亚洲国产精品一区二区第一页 | 亚洲最新合集| 午夜免费久久久久| 欧美不卡一卡二卡免费版| 欧美色中文字幕| 国产在线不卡| 99热免费精品在线观看| 欧美在线播放一区二区| 亚洲高清电影| 欧美一区二区日韩| 欧美美女日韩| 国产亚洲a∨片在线观看| 亚洲卡通欧美制服中文| 久久精品理论片| 日韩一级在线| 免费高清在线视频一区·| 国产精品免费久久久久久| 亚洲国产一区二区三区青草影视 | 国产欧美精品日韩区二区麻豆天美 | 亚洲欧美日韩天堂| 欧美激情网友自拍| 极品少妇一区二区三区精品视频| 亚洲午夜精品17c| 亚洲成色999久久网站| 亚洲制服av| 国产视频在线观看一区二区| 亚洲日韩第九十九页| 性做久久久久久久免费看| 欧美暴力喷水在线| 午夜精品久久久久久久99热浪潮 | 亚洲女ⅴideoshd黑人| 亚洲第一主播视频| 久久久久国产精品人| 国产欧美一区二区视频| 中文国产成人精品久久一| 欧美1区免费| 久久成人综合视频| 国产欧美亚洲日本| 欧美一级免费视频| 亚洲一区999| 欧美香蕉大胸在线视频观看| 亚洲精品视频一区二区三区| 欧美大片免费观看| 久久综合导航| 亚洲国产99精品国自产| 久久综合久久久| 久久久亚洲欧洲日产国码αv| 国外成人在线视频| 久热精品视频在线观看| 久久久久久综合| 伊人精品在线| 欧美激情亚洲一区| 欧美极品一区二区三区| 99国产精品久久久久久久久久| 亚洲国产精品久久| 欧美日韩精品一区二区天天拍小说 | 国产精品99久久99久久久二8| 欧美视频在线观看视频极品 | 欧美一激情一区二区三区| 亚洲一区二区三区四区在线观看| 国产精品久久久久久av下载红粉| 午夜精彩国产免费不卡不顿大片| 亚洲欧美久久久久一区二区三区| 国产一区二区中文字幕免费看| 久久综合久久美利坚合众国| 久久综合九色综合网站| 99精品视频免费| 9色精品在线| 国产一区二区三区在线免费观看| 久久一本综合频道| 欧美高清不卡在线| 亚洲欧美日本另类| 久久精品国产欧美激情| 日韩午夜激情av| 亚洲一区二区高清| 欧美紧缚bdsm在线视频| 免费亚洲电影在线观看| 亚洲成人资源| 亚洲激情一区| 国产精品九九| 免费观看日韩av| 国产精品成人av性教育| 噜噜噜噜噜久久久久久91| 欧美精品激情在线观看| 欧美中文字幕在线播放| 欧美a级一区| 午夜精品久久久久99热蜜桃导演| 久久久免费av| 午夜精品久久久久久| 欧美a级大片| 久久一区激情| 国产精品久久久久毛片大屁完整版 | 欧美性大战久久久久久久| 久久久最新网址| 国产精品久久久久久久一区探花| 亚洲风情在线资源站| 国产真实乱子伦精品视频| 亚洲精品影院在线观看| 亚洲第一在线综合在线| 亚洲男人天堂2024| 一区二区免费在线观看| 麻豆精品在线观看| 久久乐国产精品| 国产精自产拍久久久久久| 99re国产精品| 99成人精品| 欧美成人嫩草网站| 欧美gay视频激情| 国产欧美一区二区三区久久人妖| av成人免费在线| 国产精品99久久久久久人| 欧美黄色影院| 亚洲国产精品第一区二区三区| 亚洲精一区二区三区| 亚洲精品激情| 免费久久精品视频| 欧美www视频在线观看| 在线观看欧美激情| 久久久噜噜噜久久中文字免| 久久这里只精品最新地址| 国内不卡一区二区三区| 欧美中文字幕在线播放| 久久成人综合网| 国产一区欧美日韩| 欧美在线免费观看视频| 久久久久www| 国内视频一区| 久久婷婷国产综合尤物精品| 老鸭窝亚洲一区二区三区| 激情小说另类小说亚洲欧美 | 午夜精品久久久久| 久久精品二区三区| 韩国免费一区| 免费日韩视频| 亚洲精品一区二区三区蜜桃久| 亚洲作爱视频| 欧美一区二区| 国内精品美女av在线播放| 久久久7777| 亚洲电影有码| 亚洲一区二区在线视频| 国产精品欧美日韩久久| 先锋影音国产精品| 久久久夜夜夜| 亚洲美女视频在线免费观看| 国产精品jizz在线观看美国| 欧美一区二区三区精品| 欧美激情视频一区二区三区不卡| 夜夜夜久久久| 国产一区91| 欧美精品一区视频| 午夜一区二区三区不卡视频| 欧美成人精品激情在线观看| 亚洲少妇一区| 黄色一区二区三区| 欧美日韩在线电影| 欧美在线日韩精品| 亚洲人成人99网站| 久久国产一区| 在线亚洲欧美视频| 狠狠综合久久av一区二区老牛| 欧美精品1区| 久久国产精品久久精品国产| 亚洲久久在线| 乱码第一页成人| 亚洲综合不卡| 最新亚洲一区| 狠狠色丁香婷综合久久| 欧美区二区三区| 久久精品视频99| 亚洲天堂免费在线观看视频| 欧美成人有码| 久久精品国产v日韩v亚洲| 99精品久久久| 亚洲国产视频一区| 国产亚洲精品高潮| 欧美三级视频在线| 欧美h视频在线| 久久久一区二区三区| 亚洲欧美成人一区二区三区| 亚洲毛片视频| 亚洲欧洲精品一区二区三区| 久久精品夜色噜噜亚洲a∨| 亚洲一级电影| 一本久久a久久精品亚洲| 亚洲电影在线观看|