gpt4 book ai didi

c++ - OpenCV C++读取图像和修补程序NaN错误:在patchNaNs中断言失败(_a.depth()== CV_32F)

转载 作者:行者123 更新时间:2023-12-02 16:59:47 28 4
gpt4 key购买 nike

我有以下代码读取RGB JPEG图像,但是,该图像有时具有NaN值,因此我想将其修补为0:

cv::Mat model = cv::imread(path);
cv::patchNaNs(model, 0.0);

我不断收到以下错误消息:
OpenCV(3.4.5) Error: Assertion failed (_a.depth() == CV_32F) in patchNaNs, file 
..../core/src/mathfuncs.cpp, line 1597
terminate called after throwing an instance of 'cv::Exception'

此错误消息是什么意思?

最佳答案

该功能要求输入为32位浮点数。您可以使用 cv::convertTo 将图像转换为32位:

cv::Mat model = cv::imread(path);
cv::Mat output;
model.convertTo(output, CV_32F);
cv::patchNaNs(model, 0.0);

根据您的用例,您可能需要规范化输入值,以使它们在 [0-1]范围内供您使用。由于您为图片命名的方式(即 model),我假设您要创建一些分类模型,因此您可以为 cv::convertTo指定一个附加的缩放因子,以在转换后缩放值。通常图像是8位无符号整数,因此可以在这里除以255:
cv::Mat model = cv::imread(path);
cv::Mat output;
model.convertTo(output, CV_32F, 1.0f / 255.0f);
cv::patchNaNs(model, 0.0);

关于c++ - OpenCV C++读取图像和修补程序NaN错误:在patchNaNs中断言失败(_a.depth()== CV_32F),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62358009/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com