Mac环境下OpenCV无OpenGL编译支持,渲染OpenGL图形报错求助
解决Mac上OpenCV无OpenGL支持的报错问题
我之前在Mac上遇到过完全一样的报错,折腾了一阵终于搞定,给你几个针对Mac的可行方案:
方案1:用Homebrew重新编译带OpenGL支持的OpenCV
如果你的OpenCV是通过Homebrew安装的,默认预编译版本大概率没开启OpenGL支持,需要重新编译:
- 先卸载现有OpenCV:
brew uninstall --force opencv - 从源码编译并安装带OpenGL支持的版本:
这个命令会从源码编译OpenCV,同时启用OpenGL相关的编译选项,过程可能需要几分钟,耐心等就行。brew install --build-from-source opencv -D WITH_OPENGL=ON
方案2:手动编译OpenCV源码
如果Homebrew的方式不生效,或者你需要更定制化的编译配置,可以手动编译源码:
- 先确保安装了Xcode命令行工具(编译依赖):
xcode-select --install - 下载对应版本的OpenCV源码(比如你用的4.4.0),解压后创建一个
build目录并进入:mkdir build && cd build - 用CMake配置编译选项,重点开启OpenGL支持:
这里cmake -D CMAKE_BUILD_TYPE=Release -D WITH_OPENGL=ON -D BUILD_opencv_highgui=ON ..BUILD_opencv_highgui=ON是确保包含了带OpenGL支持的highgui模块,避免后续还是找不到相关函数。 - 编译并安装:
make -j$(sysctl -n hw.ncpu) && sudo make install-j后面的参数是用满你的CPU核心,加快编译速度。
额外注意点
- 如果你代码里用到了Qt相关的OpenGL渲染,还可以在CMake配置里加上
-D WITH_QT=ON,因为OpenCV的highgui OpenGL支持有时依赖Qt框架。 - 编译完成后,记得重启你的IDE或者终端,确保新安装的OpenCV被正确识别。
这个报错的核心原因就是你当前使用的OpenCV在编译阶段没有启用OpenGL支持,Mac上的预编译包通常会关闭这个选项来缩减体积,所以必须重新编译开启才能使用cvSetOpenGlContext这类函数。
内容的提问来源于stack exchange,提问作者joethemow
相关产品推荐
相关产品推荐

