我似乎无法使它正常工作。我正在尝试获取图像的像素值,但是首先需要更改图像的颜色,但是由于我不能使用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;

            }
        }
}

最佳答案

为了实现您的目标(即类型转换),请使用cv::Mat::convertTo

示例:img.convertTo(MatBlue, CV_32F)img.convertTo(MatBlue, CV_32F, 1.0/255.0)(将值归一化为0到1)。

您正在代码中混合使用char和float指针类型。

关于c++ - 为什么不起作用? opencv Mat_ <浮点>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11397939/

10-12 02:09