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
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);
}
求大神指教是哪里出了问题