ヒープメモリが壊れるというバグが直せなくて困っています。
opencvで輪郭検出をするコードを実装したいのですが、findContours関数でvector<vector<cv::Point>> contours に輪郭を格納したところ、ヒープメモリが壊れてしまうようです。
vector の仕様では確保したメモリをオーバーすると自動的にさらに大きな領域を確保してくれるようですが、うまいこと確保できていないようです。
なにがだめなのかよくわかりません。ご教授願います。
コードを以下に示します。
cv::Mat srcimg;
srcimg =cv::imread("fish0811.jpg");
cv::imshow("image",srcimg);
cv::Mat grayimg;
cv::cvtColor(srcimg,grayimg,CV_BGR2GRAY);
const double lthreshold = 100.0;
const double maxvalue = 255.0;
cv::Mat binimg;
cv::threshold(grayimg,binimg,lthreshold,maxvalue,THRESH_BINARY);
std::vector< std::vector<cv::Point> > contours;
cv::findContours(binimg,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
cv::Mat contourimg(srcimg.size(),CV_8UC1,cv::Scalar(255));
int drawAllContours =-1;
cv::drawContours(contourimg,contours,drawAllContours,Scalar(0));
cv::drawContours(srcimg,contours,drawAllContours,Scalar(0));
cv::imshow("contourimg",contourimg);
cv::imshow("contour srcimg",srcimg);
cv::waitKey(0);
cv::destroyAllWindows();