日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

图像转换为二维数组存入DSP6748

發(fā)布時(shí)間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像转换为二维数组存入DSP6748 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。博客不用于商業(yè)活動(dòng),博主對(duì)博客的使用,擁有最終解釋權(quán)?
本文為原創(chuàng)作品,未經(jīng)本人同意,禁止轉(zhuǎn)載,禁止用于商業(yè)用途!本人對(duì)博客使用擁有最終解釋權(quán)?
歡迎關(guān)注我的網(wǎng)上圖書室: [晨鳧追風(fēng)]和 微信公眾號(hào):青春當(dāng)追風(fēng)


這篇博客主要是要講怎么把一張圖片存成一個(gè)二進(jìn)制的文件,直接存到DSP中來做處理,而不用考慮DSP與圖像采集模塊,或者上位機(jī)之間的數(shù)據(jù)通信使得我們更加專注于算法的開發(fā)研究和處理功能的實(shí)現(xiàn)。

這是最近在做的一樣工作,主要開發(fā)對(duì)雷達(dá)圖像處理的目標(biāo)檢測(cè)算法。思路是先把現(xiàn)成的雷達(dá)圖片轉(zhuǎn)化為一個(gè)數(shù)組,然后以頭文件的形式包含到程序中。用來驗(yàn)證算法和計(jì)算速度。DSP采用TI公司的6000系列單核處理器,6748(背景交代完畢,可以忽略)。

開胃小菜---MATLAB?size()函數(shù) imread()函數(shù)

matlab中,對(duì)于size函數(shù),其返回值為:

[ROWCOL] = size(A)

例如:

A = [0, 1 ,2; 0, 1, 2]; size(A)

ans =

????2????3

此處A為兩行三列的矩陣

在讀取一張圖片之后,(此處默認(rèn)為灰度圖)返回一個(gè)矩陣,行數(shù)和列數(shù)則分別對(duì)應(yīng)于圖像的高度和寬度,

str1 = 'C:\Users\yezi\Desktop\dsp處理\'; str2 = '111.bmp'; str3 = strcat(str1,str2); image = imread(str3);

matlab中讀一張?jiān)谥付窂较碌膱D片,matlab已經(jīng)提供了一個(gè)imread()函數(shù),它返回?cái)?shù)字圖片每一點(diǎn)像素的灰度值,存成一個(gè)矩陣image

?????行數(shù)——高度

???? 列數(shù)——寬度

?圖片高度寬度怎么看?

在圖片上【右鍵】—【屬性】—【詳細(xì)信息】

Opencv中同樣提供一個(gè)imread函數(shù),讀取一個(gè)圖片,并存為一個(gè)Mat類的對(duì)象。也是包含一個(gè)圖像矩陣,行數(shù)列數(shù)與matlab是一樣的。

把圖片存成一個(gè)一維數(shù)組,然后在DSP中要把它恢復(fù)成一個(gè)二維矩陣,于是行數(shù)列數(shù)就顯得相當(dāng)重要。正是對(duì)這個(gè)函數(shù)的理解,解決了我在DSP中讀取圖片時(shí)把行數(shù),列數(shù)搞混后出現(xiàn)錯(cuò)誤,先記住它。


DSP6748讀取圖片相關(guān)介紹

在對(duì)DSP6748進(jìn)行圖像處理算法開發(fā)時(shí),你可以利用fopen()fread()函數(shù),在CCS集成開發(fā)環(huán)境下,直接讀取上位機(jī)中指定路徑下的文件,但是這必須是在Debug模式下,通過仿真器進(jìn)行鏈接才能實(shí)現(xiàn)。

在仿真模式下,通過仿真器讀取上位機(jī)中的一張圖片,需要耗費(fèi)很長(zhǎng)時(shí)間。因此為了算法調(diào)試的速度和需要,我把圖片轉(zhuǎn)化為一個(gè)頭文件包含到程序中,這也是通常的做法。


圖片轉(zhuǎn)換為字符數(shù)組形式


TI提供的轉(zhuǎn)換工具

TI公司提供了一個(gè)轉(zhuǎn)換的小工具,在C6748_StarterWare包中,具體路徑為:..\C6748_StarterWare_1_20_04_01\tools\bmp2c

具體用法:


  • 把要轉(zhuǎn)化的圖片拷貝到該工具tools\bmp2c目錄下

  • 在該目錄下,按住shift按鍵,鼠標(biāo)右鍵—【在此處打開命令窗口】

  • 輸入命令:bmp2c -8 InPutName.bmp OutPutName.c?

  • 自動(dòng)生成字符數(shù)組文件 OutPutName.c

  • 圖片:

    轉(zhuǎn)換窗口:


    轉(zhuǎn)換出來的文件:


    看著好像很方便,但是好事總是多磨,不幸的是這個(gè)工具只是支持24位深度和16位深度的圖片,而我所需要的卻是要把一幅8位的圖片,就是灰度圖轉(zhuǎn)化為字符數(shù)組文件,于是自己動(dòng)手豐衣足食:


    我的轉(zhuǎn)換工具


    再上我編寫的matlab的代碼:

    %%讀入灰度圖像,轉(zhuǎn)化為二進(jìn)制文件,即一個(gè)一維數(shù)組 clear clc [RGB,map]=imread('gray1234.bmp');%讀入需要轉(zhuǎn)化的圖片,圖片和m文件一個(gè)路徑下 H=RGB; I1=double(H); [M,N]=size(I1); information12 = '#ifndef IMAGE_H_\n' information13 = '#define IMAGE_H_\n\n\n\n\n' fid=fopen('image.h','wt'); %在當(dāng)前目錄下創(chuàng)建一個(gè)文件寫入數(shù)據(jù) fprintf(fid,information12); fprintf(fid,information13);fprintf(fid,'const unsigned char image[] = {\n');%寫數(shù)組名 n=0; for i=1:M%fprintf(fid,'{'); for j=1:N ?%寫數(shù)據(jù)n=n+1; fprintf(fid,'0x%x',I1(i,j));if (j ~= N ) || (i ~= M );fprintf(fid,','); endend fprintf(fid,'\n'); end fprintf(fid,'};\n'); fprintf(fid,'#endif /* IMAGE_H_ */'); fclose(fid);

    因?yàn)镸ATLAB可以支持好多種圖片格式的讀取,所以只要把圖片后綴名變換,該工具就可以支持多種格式的圖片!!!但是是轉(zhuǎn)換灰度圖,其實(shí)是一個(gè)二維數(shù)組,但是可以按照上面的思路,稍微修改代碼,便可以轉(zhuǎn)出rgb的三維數(shù)組。

    代碼下載地址:點(diǎn)擊打開鏈接

    轉(zhuǎn)換之后的頭文件:

    至此轉(zhuǎn)換完成。

    把該頭文件包含到CCS工程中,就可以直接對(duì)圖片進(jìn)行處理了。

    ?CCS中的主函數(shù)測(cè)試代碼:

    void main() {int i ;int j;for(i = 0; i < height; i++){for (j = 0; j < width; ++j){BA[i][j] = image[i * width + j];}}

    BA為把該圖片一維數(shù)組重新轉(zhuǎn)為二維數(shù)組。要注意其中height為行數(shù),width為列數(shù)


    正如上圖所示,把widthheight分清楚了,再把一維數(shù)組轉(zhuǎn)化為二維數(shù)組就不會(huì)錯(cuò)。這時(shí)候用到我開頭講到的那個(gè)注意事項(xiàng)。

    好了本文到此結(jié)束!歡迎有興趣的朋友一起交流,批評(píng)指正!希望我的思路能給你帶來一些靈感!

    

    總結(jié)

    以上是生活随笔為你收集整理的图像转换为二维数组存入DSP6748的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。