python读取raw图片文件(python 读取图像文件)

http://www.itjxue.com  2023-04-03 19:55  来源:未知  点击次数: 

怎样读取RAW数据

CFile?file;

????file.Open("RAW文件路径",CFile::modeRead|CFile::typeBinary);

????int?n?=?file.GetLength();

????BYTE?*buff;

????buff=new?BYTE[n];

????memset(buff,?0,?n);

????file.Read(buff,?n);

?

????????BYTE?*pBGR?=?new?BYTE[3*n];

????????ConvertRawY8BGGR(1280,?1024,?buff,?pBGR);

?????????

????RGBTRIPLE?*rgb;

????rgb?=?new?RGBTRIPLE[n];

????ZeroMemory(rgb,sizeof(RGBTRIPLE)?*?n);

?

????memcpy(rgb,pBGR,sizeof(RGBTRIPLE)?*?n);

????????SaveBmp("BMP文件路径",?rgb,?24);

?

?

void?ConvertRawY8BGGR(UINT32?XSize,UINT32?YSize,BYTE?*pBuf,BYTE?*pBGR)

{

??BYTE?*pR,*pB,*pG0,*pG1;

??UINT32?i,j;

??struct?pdst

??{

????BYTE?B;

????BYTE?G;

????BYTE?R;

??}*pDst;

?

??pDst=(struct?pdst*)pBGR;

?

??for(i=0;iYSize-1;i++)

??{

????if(i1)

????{

??????pG1=pBuf+i*XSize;

??????pR=pG1+1;

??????pB=pG1+XSize;

??????pG0=pB+1;

????}

????else

????{

??????pB=pBuf+i*XSize;

??????pG0=pB+1;

??????pG1=pB+XSize;

??????pR=pG1+1;

????}

?

????//?Go?through?all?pixels

????for(j=0;jXSize-1;j++)

????{

??????pDst-B=*pR;

??????pDst-G=(BYTE)((*pG0+*pG1)/2);

??????pDst-R=*pB;

?

??????pDst++;

?

??????if(j1)

??????{

????????pG0+=2;

????????pR+=2;

??????}

??????else

??????{

????????pB+=2;

????????pG1+=2;

??????}

????}

????pDst-B=0;

????pDst-G=0;

????pDst-R=0;

?

????pDst++;

??}

?

??memset(pBGR+(XSize*(YSize-1))*3,0,XSize*3);

}

?

//保存bmp图片

BOOL?SaveBmp(CString?BMPFilename,RGBTRIPLE?*pRGBBuf,int?iBitCount)

{

????long?RGB_SIZE?=?1280*1024*3?;//*?3;//rgb是24位

?????

????//当是24位时候

????if(iBitCount?==?24)

????{

????????//创建的文件

????????CFile?*file=?new?CFile();

?????????

????????//位图文件头

????????BITMAPFILEHEADER?bmpHeader;

?????????

????????//位图信息头(没调色板)

????????BITMAPINFO?bmpInfo;

?????????

????????//创建位图

????????if?(!file-Open(BMPFilename,CFile::modeCreate|CFile::modeReadWrite))

????????{

????????????return?FALSE;

????????}

?????????

????????//位图信息头

????????bmpHeader.bfType?=?0x4d42;

?????????

????????bmpHeader.bfSize?=?RGB_SIZE?+?sizeof(BITMAPFILEHEADER)?+?sizeof(BITMAPINFOHEADER);//+sizeof(RGBQUAD)*256;

?????????

????????bmpHeader.bfReserved1?=?0;

?????????

????????bmpHeader.bfReserved2?=?0;

?????????

????????bmpHeader.bfOffBits?=?sizeof(BITMAPFILEHEADER)?+?sizeof(BITMAPINFOHEADER);//+sizeof(RGBQUAD)*256;

?????????

????????//位图文件头

????????long?bits=8*128;

????????bmpInfo.bmiHeader.biSize?=?sizeof(BITMAPINFOHEADER);

?????????

????????bmpInfo.bmiHeader.biWidth?=?BITMAP_WIDTH;

?????????

????????bmpInfo.bmiHeader.biHeight?=?BITMAP_HEIGHT;

?????????

????????bmpInfo.bmiHeader.biPlanes?=?1;

?????????

????????bmpInfo.bmiHeader.biBitCount?=?24;

?????????

????????bmpInfo.bmiHeader.biCompression?=?BI_RGB;

?????????

????????bmpInfo.bmiHeader.biSizeImage?=RGB_SIZE;//?;WIDTHBYTES(bits)*256

?????????

????????bmpInfo.bmiHeader.biXPelsPerMeter?=?0;

?????????

????????bmpInfo.bmiHeader.biYPelsPerMeter?=?0;

?????????

????????bmpInfo.bmiHeader.biClrUsed?=?0;

?????????

????????bmpInfo.bmiHeader.biClrImportant?=?0;

?????????

????????//写入位图文件头

????????file-Write(bmpHeader,sizeof(BITMAPFILEHEADER));

?????????

????????//写入位图信息

????????file-Write((bmpInfo.bmiHeader),sizeof(BITMAPINFOHEADER));

??

????????//写入位图数据

????????file-Write(pRGBBuf,RGB_SIZE);

?????????

????????//关闭文件

????????file-Close();

?????????

????????return?TRUE;

????}

????else

????????return?FALSE;

}

如何在 python raw

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。

像Perl语言一样, Python 源代码同样遵循 GPL(GNU General Public License)协议。

想用python处理比较大的单色图片文件,如何提高速度

你好,你可以考虑使用numpy的函数来做,下面是例子的python代码

image?=?np.zeros((400,400,3),?dtype="uint8")

raw?=?image.copy()

image[np.where((image==[0,0,0]).all(axis=2))]?=?[255,255,255]

cv2.imshow('Test0',?image)

lower_black?=?np.array([0,0,0],?dtype?=?"uint16")

upper_black?=?np.array([70,70,70],?dtype?=?"uint16")

black_mask?=?cv2.inRange(image,?lower_black,?upper_black)

image[np.where((image?==?[0,0,0]).all(axis?=?2))]?=?[155,255,155]

black_mask[np.where(black_mask?==?[0])]?=?[155]

你把上面的那个image的数值改成你需要改的目标就可以直接替换了。

python读取文件的时候出现问题了,请问是什么原因?

代码的问题。

python异常,表示运行时出现了错误,图中的错误为:读取文件时,已经遇到了文件结尾而无法读取,这种情况需要程序编写额外的代码来处理。

代码:

python2要用raw_input()而不是input()

扩展资料:

python Traceback (most recent call last) 错误信息

Traceback (most recent call last):

File "XXX.py", line 13, in module

f3('0')

File "XXX.py", line 12, in f3

return f2(s)+1

File "XXX.py", line 8, in f2

return f1(s)+1

File "XXX.py", line 4, in f1

return 1 / int(s)

ZeroDivisionError: division by zero

解读错误信息就可以定位错误。

Traceback (most recent call last):

这是错误的跟踪信息。

File "XXX.py", line 13, in module

f3('0')

调用f3()出错了,错误出现在文件XXX.py的第13行代码,错误来源第9行:

File "XXX.py", line 12, in f3?

return f2(s)+1

调用f2()出错了,错误出现在文件XXX.py的第12行代码,错误来源第8行:

File "XXX.py", line 8, in f2?

return f1(s)+1

调用f1()出错了,错误出现在文件XXX.py的第8行代码,错误来源第4行:

File "XXX.py", line 4, in f1?

return 1 / int(s)

return 1 / int(s)出错了,找到了错误的源头。

ZeroDivisionError: division by zero

这是错误类型。

python为什么无法使用raw

python是一款应用非常广泛的脚本程序语言,谷歌公司的网页就是用python编写。python在生物信息、统计、网页制作、计算等多个领域都体现出了强大的功能。python和其他脚本语言如java、R、Perl 一样,都可以直接在命令行里运行脚本程序。工具/原料

python;CMD命令行;windows操作系统

方法/步骤

1、首先下载安装python,建议安装2.7版本以上,3.0版本以下,由于3.0版本以上不向下兼容,体验较差。

2、打开文本编辑器,推荐editplus,notepad等,将文件保存成 .py格式,editplus和notepad支持识别python语法。

脚本第一行一定要写上 #!usr/bin/python

表示该脚本文件是可执行python脚本

如果python目录不在usr/bin目录下,则替换成当前python执行程序的目录。

3、编写完脚本之后注意调试、可以直接用editplus调试。调试方法可自行百度。脚本写完之后,打开CMD命令行,前提是python 已经被加入到环境变量中,如果没有加入到环境变量,请百度

4、在CMD命令行中,输入 “python” + “空格”,即 ”python “;将已经写好的脚本文件拖拽到当前光标位置,然后敲回车运行即可。

在Python中哪个组件能识别raw格式文件

import Image

rawData = open("I.raw" 'rb').read()

im = Image.fromstring("F", (512,512), rawData, "raw", "F;32F")

# "F" 指定图像的mode为“F”

# (512,512)为 图像大小

# rawdata 为存放数据的变量

# "raw" 指定图像为raw格式

# "F;32F" 指定数据在内存中的格式,为32位浮点型

# 如此im中就保存的读入的数据,但并没有做格式和类型转换

out = im.point(lambda i : i * (1.0/4.0)) # 对图像逐像素进行处理

out.show()

(责任编辑:IT教学网)

更多

推荐软件水平考试文章