入力画像に対してcv::warpperspectiveTransform()によってホモグラフィー行列を適用したいのですが、
メモリアクセス違反が発生してしまいます。
OpenCV warpperspectiveを参考に色々試してみましたがどうも上手く行きません。
助言をいただけないでしょうか。

cv::Mat src_image = cv::imread("image.png"); // 入力画像

cv::Mat src_corner = cv::Mat(4, 1, CV_32FC2); // 入力画像の四隅
cv::Mat dst_corner = cv::Mat(4, 1, CV_32FC2); // 出力画像の四隅 
for (int i = 0; i < 2; ++i) {
        for (int j = 0; j < 2; ++j) {
                src_corner.at<cv::Vec2f>(i*2+j, 0)[0] = src_image.cols * j;
                src_corner.at<cv::Vec2f>(i*2+j, 0)[1] = src_image.rows * i;
        }
}

// ホモグラフィー行列homographyはあらかじめ適切に計算済み

// 入力画像の四隅の点をホモグラフィー変換
cv::perspectiveTransform(src_corner, dst_corner, homography);

// ホモグラフィー変換によって負の座標を持つ点を補正
cv::Mat h;
cv::Rect br;
{
        br = cv::boundingRect(dst_corner);
        cv::Mat offset_mat = cv::Mat::eye(3, 3, CV_32FC1);
        offset_mat.at<float>(0, 2) -= br.x;
        offset_mat.at<float>(1, 2) -= br.y;
        h = offset_mat * homography;
}

// ホモグラフィー変換
cv::Mat dst_image;
cv::warpPerspective(src_image, dst_image, h, br.rect);