我有一个背景场景的图像和前面有物体的同一场景的图像.现在我想用背景减法创建前景中对象的蒙版.两个图像都是RGB.
我已经创建了以下代码:
cv::Mat diff;
diff.create(orgImage.dims, orgImage.size, CV_8UC3);
diff = abs(orgImage-refImage);
cv::Mat mask(diff.rows, diff.cols, CV_8U, cv::Scalar(0,0,0));
//mask = (diff > 10);
for (int j=0; j<diff.rows; j++) {
// get the address of row j
//uchar* dataIn= diff.ptr<uchar>(j);
//uchar* dataOut= mask.ptr<uchar>(j);
for (int i=0; i<diff.cols; i++) {
if(diff.at<cv::Vec3b>(j,i)[0] > 30 || diff.at<cv::Vec3b>(j,i)[1] > 30 || diff.at<cv::Vec3b>(j,i)[2] > 30)
mask.at<uchar>(j,i) = 255;
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道我这样做是否正确?
我正在使用Visual Studio 2010,我使用的是点灰色相机.我使用flycapture libs和dll来捕获我的应用程序中的视频流.我使用FlyCapture2.dll,FlyCapture2d.dll和libiomp5md.dll(全32位).我的应用程序完美地编译和链接静态库,在发布模式下它也可以完美运行.但是,在调试模式下,我收到以下错误:应用程序无法正确启动(0xc0150002).单击"确定"关闭应用程序.
我认为flycapture的动态库存在问题.我使用最新版本的flycapture但我无法解决这个问题.
谢谢