The problem lies with passing in the Vector corners. It doesn't get cast to OutputArray.
Replace the block:
vector<Corner> corners;
my_CornerDetector( frame_gray, corners);
for( int i = 0; i < corners.size(); i++ )
circle(frame, Point2f(corners[i].x, corners[i].y), 4, CV_RGB(255,0,0), -1, 8, 0 );
with:
Mat corners;
my_CornerDetector( frame_gray, corners);
for( int i = 0; i < corners.rows; i++ )
{
Corner c = corners.at<Corner>(i, 0);
circle(frame, Point2f(c.x, c.y), 4, CV_RGB(255,0,0), -1, 8, 0 );
}