導航:首頁 > 圖片大全 > 如何讓圖片轉化為二維數組

如何讓圖片轉化為二維數組

發布時間:2022-08-07 15:06:08

A. C#中如何把圖片轉化為2維數組

以下是測試代碼和驗證結果:

staticvoidMain(paramsstring[]args)
{
Bitmapimg=newBitmap(@"E: empfolder estimage.bmp");//導入一張RGB彩色圖片
RectanglelockRect=newRectangle(0,0,img.Width,img.Height);
BitmapDataimgData=img.LockBits(lockRect,ImageLockMode.ReadOnly,img.PixelFormat);

byte[,]rband=newbyte[img.Height,img.Width];//彩色圖片的R、G、B三層分別構造一個二維數組
byte[,]gband=newbyte[img.Height,img.Width];
byte[,]bband=newbyte[img.Height,img.Width];
introwOffset=imgData.Stride-img.Width*3;

//這里不用img.GetPixel方法,而採用效率更高的指針來獲取圖像像素點的值
unsafe
{
byte*imgPtr=(byte*)imgData.Scan0.ToPointer();

for(inti=0;i<img.Height;++i)
{
for(intj=0;j<img.Width;++j)
{
rband[i,j]=imgPtr[2];//每個像素的指針是按BGR的順序存儲的
gband[i,j]=imgPtr[1];
bband[i,j]=imgPtr[0];

imgPtr+=3;//偏移一個像素
}
imgPtr+=rowOffset;//偏移到下一行
}
}

img.UnlockBits(imgData);
}

B. jpeglib.h如何使用 誰給我個把jpg拆成二維數組的函數,帶注釋的 謝謝

intReadJPEG(constchar*jpg_name)
{
FILE*infile;//讀取文件
intline_index;//jpg圖片逐行掃描時的循環變數
introw_stride;

structjpeg_decompress_structcinfo;//解壓jpeg過程中用到的結構體
structjpeg_error_mgrjerr;//用於錯誤處理的結構體對象
jpeg_create_decompress(&cinfo);//初始化cinfo結構
cinfo.err=jpeg_std_error(&jerr);//將錯誤處理結構對象綁定在JPEG對象上

if((infile=fopen(jpg_name,"rb"))==NULL)//利用標准C中的文件指針傳遞要打開的jpg文件
{
return-1;
}
else
{
/*解析jpg*/
jpeg_stdio_src(&cinfo,infile);//獲取文件信息
jpeg_read_header(&cinfo,TRUE);//將圖像的預設信息填充到cinfo結構中以便程序使用,常見的可用信息包括圖像的寬cinfo.image_width,高cinfo.image_height,色彩空間cinfo.jpeg_color_space,顏色通道數cinfo.num_components等
cinfo.out_color_space=JCS_GRAYSCALE;//設定輸出圖像的色彩空間,可以把一個原本彩色的圖像由真彩色JCS_RGB變為灰度JCS_GRAYSCALE
jpeg_start_decompress(&cinfo);//根據設定的解壓縮參數進行圖像解壓縮操作
row_stride=cinfo.output_width*cinfo.output_components;//計算每行需要的空間大小,比如RGB圖像就是寬度×3,灰度圖就是寬度×1
JSAMPARRAYbuffer=(*cinfo.mem->alloc_sarray)((j_common_ptr)&cinfo,JPOOL_IMAGE,row_stride,1);//為緩沖區分配空間

input_index=0;
while(cinfo.output_scanline<cinfo.output_height)//output_scanline表示當前已經讀取的行數,如此即可依次讀出圖像的所有數據,並填充到緩沖區中,參數1表示的是每次讀取的行數
{
jpeg_read_scanlines(&cinfo,buffer,1);
/*你的處理代碼*/
}
/*你的處理代碼*/
jpeg_finish_decompress(&cinfo);//解壓縮完畢
jpeg_destroy_decompress(&cinfo);//釋放資源
fclose(infile);//關閉文件
return0;
}
}

C. C語言把bmp圖片轉換為二維數組,運行出現錯誤

你這是要幹嘛?bmp 也不都是24位的圖啊,32位,16位 都有。 是要把每個像素點的顏色值寫到數組中嗎?

D. 請問Matlab如何將圖像變為二維數組

I=imread('圖像文件名');
imshow(I,[]);

E. 想請教一下java的編程前輩們,如果不用imageIO類的話怎樣把一個jpg圖片讀入到二維數組中處理

不知道你說的特定jre是什麼意思,不是一個只有有限功能的jre,比如嵌入式平台,如果是這樣我建議你先用標准javase開發一個程序然後把圖片變成數組存到文件里去,然後你直接讀這個文件就可以了。可以用BufferedImage的getRGB(int x, int y)來獲得每一個點得像素值然後存入到文本文件,你的程序只要讀這個文本就可以了。
當然你可以再你那個專用jre上在加入一個Jpg讀取功能,不過如果他本身不支持,你加上去就費勁很多。

F. java中圖像與數組轉換

按照你的要求編寫的Java程序如下:( 要注意的地方見語句後面的注釋)

importjava.awt.image.BufferedImage;
importjava.awt.image.RenderedImage;
importjava.io.File;
importjava.io.IOException;
importjavax.imageio.ImageIO;
publicclassImageWithArray{
publicstaticvoidmain(String[]args){
//讀取圖片到BufferedImage
BufferedImagebf=readImage("c:\tmp\6\female.png");//這里寫你要讀取的絕對路徑+文件名
//將圖片轉換為二維數組
int[][]rgbArray1=convertImageToArray(bf);
//輸出圖片到指定文件
writeImageFromArray("c:\tmp\2.png","png",rgbArray1);//這里寫你要輸出的絕對路徑+文件名
System.out.println("圖片輸出完畢!");
}
(StringimageFile){
Filefile=newFile(imageFile);
BufferedImagebf=null;
try{
bf=ImageIO.read(file);
}catch(IOExceptione){
e.printStackTrace();
}
returnbf;
}
publicstaticint[][]convertImageToArray(BufferedImagebf){
//獲取圖片寬度和高度
intwidth=bf.getWidth();
intheight=bf.getHeight();
//將圖片sRGB數據寫入一維數組
int[]data=newint[width*height];
bf.getRGB(0,0,width,height,data,0,width);
//將一維數組轉換為為二維數組
int[][]rgbArray=newint[height][width];
for(inti=0;i<height;i++)
for(intj=0;j<width;j++)
rgbArray[i][j]=data[i*width+j];
returnrgbArray;
}
(StringimageFile,Stringtype,int[][]rgbArray){
//獲取數組寬度和高度
intwidth=rgbArray[0].length;
intheight=rgbArray.length;
//將二維數組轉換為一維數組
int[]data=newint[width*height];
for(inti=0;i<height;i++)
for(intj=0;j<width;j++)
data[i*width+j]=rgbArray[i][j];
//將數據寫入BufferedImage
BufferedImagebf=newBufferedImage(width,height,BufferedImage.TYPE_INT_BGR);
bf.setRGB(0,0,width,height,data,0,width);
//輸出圖片
try{
Filefile=newFile(imageFile);
ImageIO.write((RenderedImage)bf,type,file);
}catch(IOExceptione){
e.printStackTrace();
}
}
}

運行結果:

圖片輸出完畢!

原圖:

G. Matlab中怎麼把jpg圖片存成二維矩陣

首先,二維矩陣只能表示灰度圖片。
所以,如果jpg是彩色的,要用rgb2gray 轉換為灰度圖片才可以。
其次,MATLAB讀取進來的圖片都是數組形式,如果要把圖片保存為二維數組,直接使用save函數即可。
例如
picture是彩色圖片。那麼
pic = rgb2gray(picture);
save picmat pic
則將pic這個圖片以二維數組形式保存在picmat數據文件中

H. 請提供一個思路:如何將BMP格式的圖片轉換成一個二維數組

照片如果是灰階的可以把每個像素點提取出來,如果1024*768的圖片就可以變成1024*768的矩陣,每點元素為灰度,范圍從0-255

I. matlab中怎麼講圖像轉換為二維數組(求代碼)急!!

讀入彩色圖的時候,是一個二維矩陣,矩陣中每個元素有RGB三個值;
讀灰度圖時,讀入的就是一個二維矩陣,元素值是灰度值
I=imread('a.jpg');%讀入圖片
I2=rgb2gray(I); %將彩色圖變成灰色圖

J. 請問C語言讀取圖像轉換為二維數組程序有什麼問題,怎麼修改

FileName=fileDlg.GetFileName ();FILE *fp=fopen(FileName,"rb");//二進制讀方式打開指定的圖像文件fread(&FileHead, sizeof(BITMAPFILEHEADER), 1,fp); //讀取文件頭,文件指針自動後移fread(&InfoHead, sizeof(BITMAPINFOHEADER), 1,fp);//讀取信息頭,文件指針自動後移//獲取圖像寬、高、每像素所佔位數等信息bmpWidth = InfoHead.biWidth;bmpHeight = InfoHead.biHeight;//下面完成圖像數據向內存數組的存儲ImageData=new unsigned char*[bmpHeight];if(InfoHead.biBitCount==24){for (int i=0;i<bmpHeight;i++){ImageData[i]=new unsigned char[(bmpWidth*3+3)/4*4];}for (int k=0;k<bmpHeight;k++ ){for(int j=0;j<(bmpWidth*3+3)/4*4;j++){fread(&ImageData[k][j],1,1,fp);//上面完成動態二維數組的申請,這里實際讀取圖像數據}}fclose(fp);//關閉文件

閱讀全文

與如何讓圖片轉化為二維數組相關的資料

熱點內容
日本劇情片 瀏覽:700
韓國經典電影愛情推理片 瀏覽:730
韓國推理片電影全部免費 瀏覽:649
山陰公主電影完整版 瀏覽:529
believer電影 瀏覽:761
怎麼搜索完整版電影 瀏覽:601
碧姬萊爾《牛奶葯》 瀏覽:922
動漫捂耳朵圖片 瀏覽:702
黑白格子衣服配褲子圖片大全 瀏覽:152
簡單的墓地圖片大全 瀏覽:864
二手車圖片文字 瀏覽:740
愛戴美女內衣圖片 瀏覽:419
男生韓式微分碎蓋正面圖片 瀏覽:145
泰國永恆電影完整版下載 瀏覽:532
萌萌的圖片女孩好畫 瀏覽:178
歐美鄉村農場風景電影 瀏覽:91
肩膀簡筆畫圖片大全 瀏覽:530
蝗蟲文字圖片 瀏覽:562
日劇欲大尺推薦男男 瀏覽:562
動漫在畫畫圖片大全 瀏覽:222