用c++ opencv mat实现python的[:,:,:,2]维度采样
时间: 2023-12-10 10:41:35 浏览: 68
在C++中,OpenCV的Mat对象可以通过调用Mat::at函数来访问像素值。对于一个三维的Mat对象,可以通过使用Mat::at函数和逗号分隔符来访问某个像素点的R、G、B值。例如,对于一个大小为height x width x 3的Mat对象img,可以使用以下代码访问第i行、第j列的像素点的B值:
```c++
int b = img.at<cv::Vec3b>(i,j)[0];
```
其中,cv::Vec3b是一个大小为3的unsigned char类型的数组,代表了该像素点的B、G、R分量的值。
因此,要实现python中的[:,:,:,2]维度采样,可以使用类似以下的代码:
```c++
int height = img.rows;
int width = img.cols;
int depth = img.channels();
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
for (int k = 0; k < depth; k++) {
if (k == 2) {
int pixel_value = img.at<cv::Vec3b>(i,j)[k];
// Do something with the pixel_value
}
}
}
}
```
这段代码遍历了图像中所有的像素点,并且当第三维的索引值为2时,获取该像素点的值。你可以在if语句中添加自己的处理逻辑。
阅读全文