【新手求助】cvCreateTrackbar的回调函数问题
opencv吧
全部回复
仅看楼主
level 2
骑士孤魂 楼主
在主函数中创建了这个滚动条
cvCreateTrackbar("threshold", "均值化", & Thresh, 255,onTrackerSlid);
然而一直在报错,说onTrackerSlid这个参数不正确
这个是我写的回调函数,目的是每次设置滚动条的时候计算图像梯度并根据选定的阈值做二值化处理
void CMFC_OpenCvDlg::onTrackerSlid(int thresh)
{
int Gx=0, Gy=0, Zxy=0;
for (int i = 1; i<img_Histogram_equalization->height - 1; i++)
for (int j = 1; j<img_Histogram_equalization->width - 1; j++)
{
Gx = cvGet2D(img_Histogram_equalization, i, j + 1).val[0] + cvGet2D(img_Histogram_equalization, i + 1, j + 1).val[0] + cvGet2D(img_Histogram_equalization, i - 1, j + 1).val[0] -
cvGet2D(img_Histogram_equalization, i, j - 1).val[0] - cvGet2D(img_Histogram_equalization, i + 1, j - 1).val[0] - cvGet2D(img_Histogram_equalization, i - 1, j - 1).val[0];
Gy = cvGet2D(img_Histogram_equalization, i - 1, j - 1).val[0] + cvGet2D(img_Histogram_equalization, i - 1, j + 1).val[0] + cvGet2D(img_Histogram_equalization, i - 1, j).val[0] -
cvGet2D(img_Histogram_equalization, i + 1, j - 1).val[0] - cvGet2D(img_Histogram_equalization, i + 1, j).val[0] - cvGet2D(img_Histogram_equalization, i + 1, j + 1).val[0];
Zxy = (int)sqrt(Gx*Gx + Gy*Gy*1.0);
if (Zxy>thresh)
cvSet2D(img_Border, i, j, cvScalar(Zxy));
else
cvSet2D(img_Border, i, j, cvScalar(0));
}
cvShowImage("二值化", img_Border);
}
求大神指教是哪里出了问题[乖]
2016年06月01日 03点06分 1
level 1
void CMFC_OpenCvDlg::onTrackerSlid(int thresh)函数里定义了参数,在主函数引用这个函数的时候需要再写一行调用这个参数
2017年11月16日 08点11分 2
1