我正在尝试使用 TBB 并行化一些用 OpenCV 编写的图像匹配代码。问题是根据我的匹配(在左图像中创建一个 5x5 窗口并在右像素中逐个像素地寻找匹配)本质上是一个只读操作,目前我正在尝试并行化内部循环(即在给定的高度。我分配不同的像素到不同的线程)。令我惊讶的是,cvSetImageROI命令在并行完成时会中断。这是代码。
//Code below just carves out a window(5x5) at a current width which is to be matched
cvSetImageROI(leftImageROI, cvRect(curWidth - 2, 0, 5, 5));
IplImage* currentROI = cvCreateImage(cvSize(5, 5), leftImageROI->depth, leftImageROI->nChannels);
cvCopy(leftImageROI, currentROI);
cvResetImageROI(leftImageROI);
现在所有这些对我来说都是线程安全的,因为它们只读取图像。但是代码崩溃了。如果我在一开始就放了一个锁,虽然它可以工作。有人可以帮忙吗?