3

比如说,我有一个 RGB 图像rgb和一个空间坐标列表coords。我想提取空间坐标处的像素值,例如[x1 y1][x2 y2][x3 y3]。对于 RGB 图像,我可以这样做:

rgb = imread('sample.jpg')
coords = [x1 y1; x2 y2; x3 y3];
pixelData = impixel(rgb, coords(:,1), coords(:,2));

它返回指定图像像素的红色、绿色和蓝色值。

impixel仅适用于彩色 (RGB) 图像。但我想从灰度图像中提取像素值Ifor我可以使用如下循环来做到这一点

for i = 1:size(coords,1)
    pixelData(i,:) = I(coords(i,2), coords(i,1));
end

我想避免使用for循环。还有另一种方法可以做到这一点吗?

imstats = regionprops(mask, I,'PixelValues');也可以,但我首先需要一张图片mask

4

2 回答 2

5

使用sub2ind.

pixelData = I(sub2ind(size(I), coords(:,2), coords(:,1)));
于 2012-05-25T16:10:38.633 回答
-3
void Image::createImage(int width_x, int height_y)
{
   pixelData = new Color* [width];  // array of Pixel*

   for (int x = 0; x < width; x++) 
   {
       pixelData[x] = new Color [height];  // this is 2nd dimension of pixelData    
   }
}
于 2014-09-26T06:24:02.150 回答