1. python io. imread如何设置参数,使读取的图片为灰度图
方法一:在使用OpenCV读取图片的同时将图片转换为灰度图:
img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)
print("cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)结果如下:")
print('大小:{}'.format(img.shape))
print("类型:%s"%type(img))
print(img)
运行结果如下图所示:
方法二:使用OpenCV,先读取图片,然后在转换为灰度图:
img = cv2.imread(imgfile)
#print(img.shape)
#print(img)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Y = 0.299R + 0.587G + 0.114B
print("cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)结果如下:")
print('大小:{}'.format(gray_img.shape))
print("类型:%s" % type(gray_img))
print(gray_img)
运行结果如下:
方法三:使用PIL库中的Image模块:
img = np.array(Image.open(imgfile).convert('L'), 'f') #读取图片,灰度化,转换为数组,L = 0.299R + 0.587G + 0.114B。'f'为float类型
print("Image方法的结果如下:")
print('大小:{}'.format(img.shape))
print("类型:%s" % type(img))
print(img)
2. 求救matlab高手:如何获取图片的灰度值
用imread("")把图片读进来,再转换成grey模式(灰度模式),得到的就是一个灰度矩阵,要获取某个点的灰度值就和数字矩阵中获得某个点的数的方法是一样的;例如:
i=imread('tuxiang.jpg');%i是彩色图像
i1=rgb2gray(i);%i1就是灰度图像
i1(x,y)%就是(x,y)点的灰度值
i1(x1:x2,y1:y2)%就是图像一部分的灰度矩阵
3. 怎么用opencv获取图像灰度值(用C语言)
1、可以变成灰度图也可以不变。这里假设你的图像都是IPL_DEPTH_8U类型。
2、如果变成灰度图,就是单通道图像,获取的就是每一个像素点的灰度值。
IplImage* img = cvLoadImage("test.bmp", 0);
for (int i = 0; i < img->height; i++)
{
for (int j = 0; j < img->width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s = cvGet2D(img, i, j); //其中i代表y轴(第i行),即height;j代表x轴(第j列),即width。
printf("gray value=%f\n",s.val[0]);
//方法二:使用直接访问
uchar val = ((uchar *)(img->imageData + i*img->widthStep))[j]; //i和j的意义同上
printf("gray value=%d\n",val);
}
}
3、如果不变成灰度图,就是3通道图像,获取的就是每一个像素点的BGR值,然后分别获取B值,G值和R值。
IplImage* img = cvLoadImage("test.bmp", 1);
for (int i = 0; i < img->height; i++)
{
for (int j = 0; j < img->width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s=cvGet2D(img,i,j); //其中i代表y轴(第i行),即height;j代表x轴(第j列),即width。
printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]); //注意是BGR顺序
//方法二:使用直接访问
int bVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 0]; // B
int gVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 1]; // G
int rVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 2]; // R
printf("B=%d, G=%d, R=%d\n",bVal,gVal,rVal); //注意是BGR顺序
}
}
4. 如何用C语言程序从bmp格式的图片中读取图片的灰度值
方法一:
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
inti,j;
FILE*fp;//指向文件的指针
fp=fopen("Lena.raw","rb");//打开文件。注意raw格式图像要以只读二进制流的形式打开
if(!fp)
{
printf("ERROR! ");
}
unsignedchar*pData=newunsignedchar[256*256];//注意:raw图像用无符号char型读入
fread(pData,sizeof(unsignedchar),(256*256),fp);//fread具体用法见msdn
fclose(fp);//取消fp指针指向
intvalue[256]={0};//声明并初始化存灰度值的数组
for(i=0;i<(256*256);i++)//统计灰度值
{
value[pData[i]]++;
}
printf("灰度值 大小");//
printf(" ");
fp=fopen("result.txt","wb");
fprintf(fp,"灰度值 大小 ");//注意 否则不能换行!
for(j=0;j<256;j++)//将结果输出到txt中
{
printf("%d %d ",j,value[j]);
//fwrite(value,sizeof(int),256,fp);
fprintf(fp,"%d %d ",j,value[j]);//注意 否则不能换行
}
delete[]pData;//删除空间
fclose(fp);//关闭txt文件
}
方法二:
#include<stdio.h>
#include<stdlib.h>
intvalue[256]={0};
intfread(unsignedchar*pData)//把声明的那个数组空间指针作为参数来回传
{
FILE*fp;
fp=fopen("Lena.raw","rb");
if(!fp)
{
printf("ReadERROR! ");
}
fread(pData,sizeof(unsignedchar),(256*256),fp);
fclose(fp);
return0;//
}
intfchuli(unsignedchar*pData)
{
for(inti=0;i<(256*256);i++)//统计灰度值
{
value[pData[i]]++;
}
return0;//
}
intfwrite(unsignedchar*pData)
{
FILE*fp;
fp=fopen("result.txt","wb");
fprintf(fp,"灰度值 大小 ");
for(intj=0;j<256;j++)//将结果输出到txt中
{
printf("%d %d ",j,value[j]);
//fwrite(value,sizeof(int),256,fp);
fprintf(fp,"%d %d ",j,value[j]);
}
delete[]pData;//删除空间
fclose(fp);//关闭txt文件
returnvalue[256];//
}
intmain(unsignedchar*pData)
{
pData=newunsignedchar[256*256];//在主函数里声明新空间
fread(pData);//传数组地址
fchuli(pData);
fwrite(pData);
return0;
}
5. 怎样获取图片的灰度值
这个矩阵的Value不是写了是uint16类型吗?也就是16位无符号整型数,范围是0~65535
你说的是uint8类型,即8位无符号整型数,范围是0~255.仅仅是图像的表示方法和精度不同。
如果你想把这幅图转换成uint8类型,可以使用语句:
I2=im2uint8(I);%I是原图像,I2是转化后图像
6. opencv中怎么读取灰度图像
cv::Mat imgSrc= cv::imread(“路径,图像名称”,0); 后面为0读取进来就是灰度图像。
7. opencv读图片灰度值
在main函数前面加上using namespace std;
另外uchar* ptr = (uchar*)src->imageData+row*src->width;//获得灰度值数据指针
改成uchar* ptr = (uchar*)src->imageData+row*src->widthStep;//获得灰度值数据指针
运行的结果保存在了2.txt是吧,我看了下没有0
8. matlab怎么读取一幅图像,并转换为灰度图像
1、打开图片:在主界面上输入命令将图像转换为数据;Data = imread('folder icon.bmp')。
9. matlab 如何批量提取文件夹中所有图片的灰度特征
你可以将这些图片按顺序命名,然后使用一个循环逐个读取数据,最后cat成一个三维数组。
比如,你先把所有的图片使用批量重命名工具(网上有很多,如好压重命名)按顺序命名,如pic1,pic2,...,picN;
并将其放在下面的目录下,
currdir = 'D:/imagedir/';imgdata = zeros(row,col,N);
for num = 1:Nname = [currdir,'pic',num2str(num),'.bmp'];imgdata(:,:,num) = imread(name); end
10. 如何获取热成像灰度图像的灰度值与温度值的对应关系是什么
如何获取热成像灰度图像的灰度值与温度值的对应关系:热像仪现实的实际是温度,为了易于识别才人为处理成彩色的,这是一种伪彩色(是人为给不同温度定义不同的颜色)。现在的热像仪内部都有多套配色方案供选择,所谓黑白应该叫做灰度。
DN是遥感影像像元亮度值,记录的地物的灰度值。灰度值指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也叫灰度图像。而亮度值是形容彩色图像的。如果你要把彩色图像转换成黑白图像,亮度值就会作为转换后的黑白图像的灰度值。
灰度图像
在计算机领域中,灰度(Gray scale)数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。