python读取raw图片文件(python 读取图像文件)
怎样读取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()