#include <opencv2/opencv.hpp> #include <omp.h> using namespace cv; int main() { Mat src1 = imread("test1.jpg", IMREAD_GRAYSCALE); Mat src2 = imread("test2.jpg", IMREAD_GRAYSCALE); Mat mask = imread("mask.jpg", IMREAD_GRAYSCALE); Mat dst = Mat::zeros(src1.size(), CV_8UC1); // 设置线程数为4 omp_set_num_threads(4); // 带掩码的bitwise_and算子 #pragma omp parallel for for (int y = 0; y < src1.rows; y++) { for (int x = 0; x < src1.cols; x++) { if (mask.at<uchar>(y, x) == 255) { dst.at<uchar>(y, x) = src1.at<uchar>(y, x) & src2.at<uchar>(y, x); } } } imshow("src1", src1); imshow("src2", src2); imshow("mask", mask); imshow("dst", dst); waitKey(); return 0; }可以访问像素的at可以改成指针吗
时间: 2024-01-25 15:03:08 浏览: 37
是的,同样可以使用指针访问像素来替换`at`函数,以提高代码的效率,比如下面的示例代码:
```c++
Mat src1 = imread("test1.jpg", IMREAD_GRAYSCALE);
Mat src2 = imread("test2.jpg", IMREAD_GRAYSCALE);
Mat mask = imread("mask.jpg", IMREAD_GRAYSCALE);
Mat dst = Mat::zeros(src1.size(), CV_8UC1);
// 设置线程数为4
omp_set_num_threads(4);
// 带掩码的bitwise_and算子
#pragma omp parallel for
for (int y = 0; y < src1.rows; y++) {
uchar* src1_ptr = src1.ptr<uchar>(y);
uchar* src2_ptr = src2.ptr<uchar>(y);
uchar* mask_ptr = mask.ptr<uchar>(y);
uchar* dst_ptr = dst.ptr<uchar>(y);
for (int x = 0; x < src1.cols; x++) {
if (mask_ptr[x] == 255) {
dst_ptr[x] = src1_ptr[x] & src2_ptr[x];
}
}
}
imshow("src1", src1);
imshow("src2", src2);
imshow("mask", mask);
imshow("dst", dst);
waitKey();
return 0;
```
在上面的示例代码中,我们使用了指针访问像素,比如`src1.ptr<uchar>(y)`获取第`y`行像素的指针,然后通过`src1_ptr[x]`获取像素值。需要注意的是,像素值的类型是`uchar`。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)