vs2013 opencv2.43 findContours 的bug问题,求助啊

lizq3531 2016-06-26 05:12:45

//此代码是打开摄像头的,并开启定时器
void CObject_DetectionDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
// 窗体打开,关闭的按扭
if (isStop == false)
{
if (!cap.isOpened())
{
MessageBox(L"Cannot open the cam!");
return;
}
GetDlgItem(IDC_BUTTON1)->SetWindowText(L"STOP");
SetTimer(1, 100, NULL);
isStop = true;
}
else
{
KillTimer(1);
GetDlgItem(IDC_BUTTON1)->SetWindowText(L"Open");
isStop = false;
}
}



//此代码是定时器的函数
void CObject_DetectionDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (nIDEvent == 1)
{
Mat imgOrig;
cap.read(imgOrig);
CvvImage m_cvvimage;
//Mat 向 IplImage 强转
m_cvvimage.CopyOf(&IplImage(imgOrig));
m_cvvimage.DrawToHDC(hDC1, &rect1);

//对 Original 进行处理
Mat imgHSV;
Mat imgProc;
//convert the image to gray
cvtColor(imgOrig, imgHSV, COLOR_BGR2HSV);

//Threshold the image
hmin = m_slider1.GetPos() / 2;
hmax = m_slider2.GetPos() / 2;
smin = m_slider3.GetPos();
smax = m_slider4.GetPos();
vmin = m_slider5.GetPos();
vmax = m_slider6.GetPos();

inRange(imgHSV, cv::Scalar(hmin, smin, vmin), cv::Scalar(hmax, smax, vmax), imgProc);
//cvtColor(imgOrig, imgProc, CV_RGB2GRAY);

vector<Mat> contours(100);
Mat heirarchy;
cv::vector<cv::Point2i> center;
cv::vector<int> radius;
findContours(imgProc.clone(), contours, heirarchy, RETR_TREE, CHAIN_APPROX_NONE, cv::Point(0, 0));

for (int i = 0; i < contours.size(); i++)
{
Point2f c;
float r;
minEnclosingCircle(contours[i], c, r);
if (r >= 20)
{
center.push_back(c);
radius.push_back(r);
}
}

for (int i = 0; i < center.size(); i++)
{
circle(imgProc, center[i], radius[i], Scalar(255, 0, 0), 3);
}

m_cvvimage.CopyOf(&IplImage(imgProc), -1);
m_cvvimage.DrawToHDC(hDC2, &rect2);

}

CDialogEx::OnTimer(nIDEvent);
}


hmin smin vmin hmax smax vmax 均为滑动条的值,当三个最小值不断减小时才会出现bug,而比较大的时候一切都很正常,不知道为什么? 希望大神帮帮我,弄了一天多了!

断点的图片


跳到反汇编里面图片
...全文
380 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-06-27
  • 打赏
  • 举报
回复
建议楼主先编译链接调试OpenCV自带的相关例子代码。
shiter 2016-06-27
  • 打赏
  • 举报
回复
debug和release用混了
shiter 2016-06-27
  • 打赏
  • 举报
回复
你是debug,你看调用堆栈说的这个模块你有包含么,或者用混了
lizq3531 2016-06-27
  • 打赏
  • 举报
回复
引用 4 楼 wangyaninglm 的回复:
是在代码的那个函数出现了上述问题,贴一下调用堆栈




shiter 2016-06-26
  • 打赏
  • 举报
回复
是在代码的那个函数出现了上述问题,贴一下调用堆栈
lizq3531 2016-06-26
  • 打赏
  • 举报
回复
现在是把三个最小值都提高了,效果好了很好,只是我不清楚为什么会出现这种情况,比较好奇!
lizq3531 2016-06-26
  • 打赏
  • 举报
回复
没事!希望懂的朋友能给回复~
_明月 2016-06-26
  • 打赏
  • 举报
回复
真的抱歉,你使用的语言我不会,帮不了你。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧