我似乎无法让这个工作。我试图获取图像的像素值,但首先需要更改图像的颜色,但由于我不能使用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;
}
}
}
答案 0 :(得分:1)
要实现目标,即类型转换,请使用cv::Mat::convertTo
。
示例:img.convertTo(MatBlue, CV_32F)
或img.convertTo(MatBlue, CV_32F, 1.0/255.0)
(将值标准化为0到1之间)。
您正在代码中混合使用char和float指针类型。