本初学者使用visual studio编译C++程序,在使用OpenCV的过程中需要读取.exr格式的图片
因為目前OpenCV默认不支持OpenEXR图像格式,因此必须在编译OpenCV时打开对OpenEXR的支持。
妳可以在编译OpenCV时启用'OPENCV_IO_ENABLE_OPENEXR'宏定义。
假入你已经安装了OpenCV,可以嘗試一下重新安裝OpenCV并,之後启用OpenEXR支持。
使用Visual Studio编译C++程序的情况,
你可嘗試把项目的预处理器定义中添加OPENCV_IO_ENABLE_OPENEXR宏。
操作步骤如下:
右键单击项目名称,选择属性
在项目属性中,选择C/C++ > 预处理器 > 预处理器定义
在预处理器定义中添加OPENCV_IO_ENABLE_OPENEXR宏定义
应用更改并重新编译项目
完成以上操作之後,你应该能够读取.exr格式的图像了。
”该回答引用ChatGPT“
可以参考下面的解决方案,如果可行还请,点击 采纳,感谢支持!
这是因为OpenCV不支持.exr格式图片的读取。您需要先将.exr格式图片转换为OpenCV支持的图片格式,例如JPEG或PNG。
在代码中,您可以替换.exr格式的文件名为JPEG或PNG格式的文件名,以确保代码正确地读取图像。例如:
Matlf xMlap = imread("xList[il].jpg");
Matlf yMlap = imread("yList[il].jpg");
请确保在此过程中图片的完整性是正确的,并且已经修改了文件名,以正确地读取图像。
OPENCV_IO_ENABLE_OPENEXR=1 python my_script.py
或者在导入cv2之前
os.environ["OPENCV_IO_ENABLE_OPENEXR"]="1"
https://blog.csdn.net/weixin_43656802/article/details/127397556
错误原因是:OpenCV默认不支持OpenEXR格式图像
解决方案:
方案一:在编译OpenCV时启用'OPENCV_IO_ENABLE_OPENEXR'宏定义。但自己修改编译 OpenCV 容易出错。
编译的时候加上参数
-DWITH_OPENEXR=ON
方案二:用其它库如 OpenEXR 读取 OpenEXR图像,再转为 OpenCV图像
import OpenEXR
img_exr = OpenEXR.InputFile(filePath)
r_str, g_str, b_str = img_exr.channels('RGB', pt)
red = np.array(array.array('f', r_str))
green = np.array(array.array('f', g_str))
blue = np.array(array.array('f', b_str))
img = np.array([[r, g, b] for r, g, b in zip(red, green, blue)])
img = img.reshape(size[1], size[0], 3)
方案三:用imageio读写OpenEXR数据
图像改为png模式
OpenCV报错 You can enable it via 'OPENCV_IO_ENABLE_OPENEXR',可以通过设置环境变量OPENCV_IO_ENABLE_OPENEXR来启用OpenEXR支持,具体操作如下:
1、在系统环境变量中添加OPENCV_IO_ENABLE_OPENEXR,值设置为1;
2、重新编译OpenCV,重新安装OpenCV;
3、重新编译应用程序,重新运行应用程序。
两种解决途径:
OPENCV_IO_ENABLE_OPENEXR=1 python my_script.py
or
using os before importing cv2 works
os.environ["OPENCV_IO_ENABLE_OPENEXR"]="1"