0

私はこれを機能させることができないようです。画像のピクセル値を取得しようとしていますが、最初に画像の色を変更する必要がありますが、値が整数ではないため int または単に Mat を使用できないため、使用する必要が<float>あり、そのエラーが原因でポップしますcmdでこれを実行しようとするとアップします。

int main(int argc, char **argv)
{

    Mat img = imread(argv[1]);
    ofstream myfile;

    Mat_<float> MatBlue = img;
        int rows1 = MatBlue.rows;
        int cols1 = MatBlue.cols;
        for(int x = 0; x < cols1; x++) {
            for(int y = 0; y < rows1; y++) {
                float val = MatBlue.at<cv::Vec3b>(y, x)[1];
                MatBlue.at<cv::Vec3b>(y, x)[0] = val + 1;

            }
        }
}
4

1 に答える 1

1

目標を達成するには、つまり型変換を使用しますcv::Mat::convertTo

例:img.convertTo(MatBlue, CV_32F)またはimg.convertTo(MatBlue, CV_32F, 1.0/255.0)(値を 0 と 1 の間で正規化するため)。

コード内で char ポインター型と float ポインター型を混在させています。

于 2012-07-09T15:35:43.570 に答える