我想在实时网络摄像头提要中在我的手周围绘制轮廓。当我使用以下代码时,OpenCV 正在检测由于噪声、阴影等原因导致的许多其他轮廓。
cv::findContours(fgmask,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
cv::drawContours(fgimg,contours,-1,cv::Scalar(0,0,255),2);
我在网上找到了以下代码来删除小的无关紧要的区域。
cv::findContours(fgmask,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
for(int i=0;i<contours.size();i++)
{
if(contours[i].size() < 10000 && contours[i].size() > 0)
{
int size=cv::contourArea(contours[i]);
if(size>5000)
{
//Draw contour
vector<vector<Point> > tcontours;
tcontours.push_back(contours[i]);
cv::drawContours(fgimg,tcontours,-1,cv::Scalar(0,0,255),2);
}
}
}
但它根本不绘制任何轮廓。我在if(size>5000)语句之后放置了一个 cout 语句,以查看该语句是否实现了,我得到了 Cout 输出。那么为什么没有轮廓呢?push_back 函数有问题还是什么?