OpenCVのcloneについて
OpenCVとアナログカメラを使用したプログラムを作成している際に「アクセス違反」のエラーが発生してしまいます.
マルチスレッドでプログラミングをしており,1つ目のスレッドでカメラから取得した画像をcv::Matに変換しています.この画像を2つ目のスレッドで画像処理を行おうとしています.
<画像を取得しているスレッド>
cv::Mat frame;
DWORD WINAPI ImageThread(LPVOID lpData)
{
while (!lpd->bEnd){
if (mJpegData != nullptr&&mJpegSize > 0) {
std::vector<unsigned char> tmp(mJpegData, mJpegData + mJpegSize);
frame = cv::imdecode(tmp, cv::IMREAD_COLOR);
cv::imwrite("img_debug.bmp", frame);
}
}
return 0;
}
<画像をコピーしているスレッド>
DWORD WINAPI ConThread(LPVOID lpData)
{
cv::Mat img;
while (!lpd->bEnd){
if (!frame.empty) {
img = frame.clone(); //ここをコメントアウトするとエラーは発生しない
}
}
}
OpenCVのバージョンは3.3を使用しております.
どなたか解決法を教えていただけないでしょうか.