ライブ Web カメラ フィードで手の周りに輪郭を描きたいです。次のコードを使用すると、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 関数に何か問題がありますか?