Re: [問題] OpenCV 的 BMP RGB讀取的方法
※ 引述《grayyoung (灰狼)》之銘言:
: 想請問一下 有人知道怎麼讀取像素中的RGB嗎??
: 例如像這樣是讀取灰階值
: intensity = cvRound(cvGetReal2D(img, i, j);
: 想問一下有沒有人知道讀取RGB是用什麼語法
假設有一張BGR彩圖為src
1) 我們可透過 CvSize size = CvGetSize( src )
得到圖像的寬與高
寬: size.width
高: size.height
2) 此時出來的值為unsigned char 值域為-127~128
需要還原成int 值域0~255
所以需要下列這個方程式
int RCV(char color)
{
return (int)((unsigned char)color);
}
-------------------------------------
CvSize size = cvGetSize( src );
for(int y=0; y<size.height; y++){
for(int x=0; x<size.width; x++){
int index = y*size.width+x;
int B=0, G=0, R=0;
B = RCV( src->imageData[3*index+0] );
G = RCV( src->imageData[3*index+1] );
R = RCV( src->imageData[3*index+2] );
}
}
-------------------------------------
若是要讀彩圖的灰階值,可以先用函式轉換
CvSize size = cvGetSize( src );
IplImage *gray = cvCreateImage( size, IPL_DEPTH_8U, 1);
cvSetZero( gray );
cvCvtColor( src, gray, CV_BGR2GRAY);
for(int y=0; y<size.height; y++){
for(int x=0; x<size.width; x++){
int index = y*size.width+x;
int intensity=0;
intensity = RCV( src->imageData[index] );
}
}
BGR圖轉灰階的公式,其BGR權重比例可依需求自己設計,沒一定的標準。
現在用的都是幾個常見的轉換比例。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.123.81.29
→
07/21 17:33, , 1F
07/21 17:33, 1F
推
07/21 17:49, , 2F
07/21 17:49, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):