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);
画像を読み取っているだけなので、これはすべてスレッドセーフに見えますが、コードがクラッシュします。動作しますが、最初にロックをかけると。誰かが助けることができますか?