cv::Mat の深度とアクセス時の型を合わせる必要あり。
合わせないと例外が発生する。
ex )
CV_8U は unsigned char 型なので アクセス時の型もこれにする。
cv::Mat hoge = cv::Mat::zeros(3, 1, CV_8U);
for (int y = 0; y < hoge.rows; y++)
{
for (int x = 0; x < hoge.cols; x++)
{
int hh = hoge.at<unsigned char>(y, x); // .at<int> は NG。
std::cout << hh << std::endl;
// 0
// 0
// 0 と表示。 auto だとコンソールに出力されなかった。エラーは出ない。
}
}
CV_64F なら double でアクセスする。
初期化の書き方メモ
cv::Mat m = (cv::Mat_<double>(3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1);
cv::Mat hoge(cv::Size(3, 1), CV_64FC1, cv::Scalar(0));
//cv::Mat hoge = cv::Mat::zero ~ と結果は同じ。
こちらから。
http://answers.opencv.org/question/113449/how-to-initialize-mat-size-and-fill-it-with-zeros-in-a-class/
http://opencv.jp/cookbook/opencv_mat.html#matlab
以上。