⑴ 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)%就是圖像一部分的灰度矩陣