⑴ VB 如何识别图像时RGB颜色模式,还是灰度颜色模式
'利用API-GetPixel 获取窗体或图片某一点的颜色值(long类型)。注意SaleMode属性要设为3
'然后将long换算成rgb值,再判断rgb是否相等(相等的为灰色)
'重复上面几步,进行采样判断。当然如果你确定某一点 不是灰色 就是彩色的话 ,判断 一次就行
’--这样做不是非常精确,但一般还是可以的....
⑵ 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)
⑶ 怎么用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顺序
}
}
⑷ 如何用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;
}
⑸ 怎么用matlab提取灰度值啊
1.调用matlab的图像读取函数imread读图片,把图片放在work文件夹下
I = imread('样品.jpg');
2.变为灰度图
G = rgb2gray(I);
3.双击workspace中的G项,在弹出的array edit中就看到了灰度矩阵
⑹ 怎样获取图片的灰度值
这个矩阵的Value不是写了是uint16类型吗?也就是16位无符号整型数,范围是0~65535
你说的是uint8类型,即8位无符号整型数,范围是0~255.仅仅是图像的表示方法和精度不同。
如果你想把这幅图转换成uint8类型,可以使用语句:
I2=im2uint8(I);%I是原图像,I2是转化后图像
⑺ 使用OpenCV如何获取图像每个像素的灰度值
#include"cv.h"
#include"highgui.h"
#include
<iostream>
using
namespace
std;
int
main(int
argc,
char**
argv)
{
IplImage*
src
=
cvLoadImage(
"0.bmp",
0
);//导入图片
int
width=src->width;//图片宽度
int
height
=
src->height;//图片高度
for
(size_t
row=0;row<height;row++)
{
uchar*
ptr
=
(uchar*)src->imageData+row*src->width;//获得灰度值数据指针
for
(size_t
cols=0;cols<width;cols++)
{
int
intensity=ptr[cols];
cout<<intensity<<"
";
}
}
return
0;
}
⑻ 如何用C语言程序从bmp格式的图片中读取图片的灰度值
1、首先要了解bmp位图的格式,搜索些技术支持文档,bmp位图基本上是分4大部分,文件信息结果部分,文件头信息结果部分,调色板结果部分,后面就是数据实体部分。及其每个部分对应有用的信息。比如长宽。当然长宽信息你自己可以从window系统下看得到。打开bmp文件,把前面三部分的字节总数给固定下来,逐个字符读取,然后读取数据实体部分,输出就可以了。
2、例程:
#include<stdio.h>
#include<stdlib.h>
#pragmapack(2)
/*定义WORD为两个字节的类型*/
typedefunsignedshortWORD;
/*定义DWORD为e四个字节的类型*/
typedefunsignedlongDWORD;
/*位图文件头*/
typedefstructBMP_FILE_HEADER
{
WORDbType;/*文件标识符*/
DWORDbSize;/*文件的大小*/
WORDbReserved1;/*保留值,必须设置为0*/
WORDbReserved2;/*保留值,必须设置为0*/
DWORDbOffset;/*文件头的最后到图像数据位开始的偏移量*/
}BMPFILEHEADER;
/*位图信息头*/
typedefstructBMP_INFO
{
DWORDbInfoSize;/*信息头的大小*/
DWORDbWidth;/*图像的宽度*/
DWORDbHeight;/*图像的高度*/
WORDbPlanes;/*图像的位面数*/
WORDbBitCount;/*每个像素的位数*/
DWORDbCompression;/*压缩类型*/
DWORDbmpImageSize;/*图像的大小,以字节为单位*/
DWORDbXPelsPerMeter;/*水平分辨率*/
DWORDbYPelsPerMeter;/*垂直分辨率*/
DWORDbClrUsed;/*使用的色彩数*/
DWORDbClrImportant;/*重要的颜色数*/
}BMPINF;
/*彩色表*/
typedefstructRGB_QUAD
{
WORDrgbBlue;/*蓝色强度*/
WORDrgbGreen;/*绿色强度*/
WORDrgbRed;/*红色强度*/
WORDrgbReversed;/*保留值*/
}RGBQUAD;
intmain()
{
FILE*fp;
BMPFILEHEADERfileHeader;
BMPINFinfoHeader;
longoffset,bmpImageSize,width,height,bytesPerPixel,size,bitCount;
//inti,j;
//unsignedchar**p;
WORDc;
if((fp=fopen("5.bmp","rb"))==NULL)
{
printf("Cann'topenthefile! ");
exit(0);
}
fseek(fp,0,0);
fread(&fileHeader,sizeof(fileHeader),1,fp);
fread(&infoHeader,sizeof(infoHeader),1,fp);
//计算并输出位图数据的偏移量,图像的大小,宽度和高度,每个像素点所占的字节
size=fileHeader.bSize;
offset=fileHeader.bOffset;
bmpImageSize=infoHeader.bmpImageSize;
width=infoHeader.bWidth;
height=infoHeader.bHeight;
bitCount=infoHeader.bBitCount;
bytesPerPixel=infoHeader.bBitCount/8;
printf("%d%d%d%d%d%d ",size,offset,bmpImageSize,width,height,bitCount,bytesPerPixel);
//输出每个像素点所占字节中的内容
c=fgetc(fp);
while(!feof(fp))
{
printf("%x",c);
c=fgetc(fp);
}
printf(" ");
fclose(fp);
return0;
}
⑼ matlab怎么读取一幅图像,并转换为灰度图像
1、打开图片:在主界面上输入命令将图像转换为数据;Data = imread('folder icon.bmp')。
⑽ 求救matlab高手:如何获取图片的灰度值
用imread("")把图片读进来,再转换成grey模式(灰度模式),得到的就是一个灰度矩阵,要获取某个点的灰度值就和数字矩阵中获得某个点的数的方法是一样的;例如:
i=imread('tuxiang.jpg');%i是彩色图像
i1=rgb2gray(i);%i1就是灰度图像
i1(x,y)%就是(x,y)点的灰度值
i1(x1:x2,y1:y2)%就是图像一部分的灰度矩阵