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)數字圖像是每個像素只有一個采樣顏色的圖像。這類圖像通常顯示為從最暗黑色到最亮的白色的灰度,盡管理論上這個采樣可以任何顏色的不同深淺,甚至可以是不同亮度上的不同顏色。灰度圖像與黑白圖像不同,在計算機圖像領域中黑白圖像只有黑白兩種顏色,灰度圖像在黑色與白色之間還有許多級的顏色深度。