//方法一~ZeroKe
void GetPixelValue(cv::Mat img)
{
int width = img.size().width;
int height = img.size().height;
if (img.channels() == 0)//单通道
{
for (size_t y = 0; y < height; y++)
{
uchar* y_data = img.ptr<uchar>(y);//y行的首地址
for (size_t x = 0; x < width; x++)
{
int value = y_data[x];
if (value != 0)
{
y_data[x] = 0;//指针赋值
}
}
}
}
else if (img.channels() == 3)//多通道
{
int step = (width * 3 + 3 - 1) / 3 * 3;//计算扫描行
for (int y = 0; y < height; y++)
{
byte *pto = img.data + y * step;//y行的首地址
for (int x = 0; x < width; x++)
{
uchar red = pto[2];
uchar green = pto[1];
uchar blue = pto[0];
pto += 3;
}
}
}
}
//方法二~ZeroKe
void GetPixelValue(cv::Mat img)
{
int width = img.size().width;
int height = img.size().height;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
if (img.channels() == 1)//灰度图
{
uchar gray = img.at<uchar>(y, x);
}
else if (img.channels() == 3)//24位色彩空间图
{
uchar blue = img.at<Vec3b>(y, x)[0];
uchar green = img.at<Vec3b>(y, x)[1];
uchar red = img.at<Vec3b>(y, x)[2];
}
}
}
}
OpenCV遍历像素点方法
最新推荐文章于 2023-10-11 21:42:02 发布