imRGB = cv::imread(string(argv[3])+"/"+vstrImageFilenamesRGB[ni],CV_LOAD_IMAGE_UNCHANGED);报错 terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(3.4.3) /home/li/opencv-3.4.3/modules/imgproc/src/resize.cpp:4044: error: (-215:Assertion failed) !ssize.empty() in function 'resize'
时间: 2024-01-31 08:02:07 浏览: 26
这个报错信息中的错误原因是在调用OpenCV库中resize函数时,输入的图像大小为空。这个问题通常是由于读取的图像文件不存在或路径不正确导致的。因此,你需要检查一下以下几个方面:
1. 检查图像文件路径是否正确,确保该路径可以找到图像文件;
2. 检查图像文件名是否正确,确保该文件存在于指定路径中;
3. 检查图像文件是否为有效的图像文件,例如JPEG、PNG等格式的图像文件;
4. 如果图像文件路径包含空格或特殊字符,需要将其用引号括起来。
如果以上检查都没有问题,你可以尝试重新安装OpenCV库或更新版本来解决这个问题。
相关问题
解释这段代码imRGB = cv::imread(string(argv[3])+"/"+vstrImageFilenamesRGB[ni],CV_LOAD_IMAGE_UNCHANGED);
这段代码使用OpenCV库中的imread函数读取一张RGB图像,函数的第一个参数是图像的路径,第二个参数是读取图像的方式,CV_LOAD_IMAGE_UNCHANGED表示不对图像进行任何修改,直接读取原始数据。变量vstrImageFilenamesRGB[ni]是存储RGB图像文件名的向量中的第ni个元素,而string(argv[3])是程序运行时输入的第四个参数,即存储RGB图像的路径。因此,这段代码的作用是读取指定路径下的某个RGB图像。
cv::Mat img = cv::imread(img_dir + "/" + file_names[f - fcount + 1 + b]);
这段代码使用 OpenCV 库中的 imread 函数读取一张图片,并将其存储在 cv::Mat 类型的变量 img 中。
具体来说,imread 函数的参数是图片文件的路径,它通过将 img_dir 和 file_names[f - fcount + 1 + b] 拼接起来得到图片的完整路径。其中,img_dir 是存放图片的目录路径,file_names 是一个字符串数组,保存了所有需要处理的图片文件名。
在拼接路径时,f 表示当前正在处理的图片在 file_names 数组中的索引,fcount 表示每次处理的图片数量。因此,f - fcount + 1 + b 表示当前处理的是第 b 张图片,它在 file_names 数组中的索引为 f - fcount + 1 + b。
最终,imread 函数读取图片文件并将其解码为一个 cv::Mat 类型的矩阵,存储在变量 img 中。可以使用 img 变量对图片进行各种操作,例如修改像素值、裁剪、缩放、旋转等。