按照csdn帖子安装后跑测试代码一直出不了图,有没有人知道为什么呀
当前的一些课程是以Python或C++语言介绍OpenC的使用;C++ 开发工具多是在window下 Visual Studio工具,Xcode的是Mac下很强大的开发工具,本文介绍OpenCV在Xcode下配置、使用。
二、编译过程
1、编译环境配置
需要安装的工具如下,安装过程参考《iOS运行OpenCV4》文章
Xcode
CMake
Python 3.9.6
OpenCV库及额外库的下载
查看所有链接标记安装
brew reinstall pkg-config
2、编译环境
Max min Intel芯片
3 GHz 双核Intel Core i7
macOS Monterey 12.1
Python 3.9.6,
keras 依赖Python的版本:3.6–3.9
tensorflow-2.6.0依赖Python的版本:3.6-3.9
cmake version 3.22.1
GNU Make 3.81
OpenCV主干,版本: 4.5.5,更新时间:2022-03-11
3、创建目录
cd ./opencv
mkdir build
cd build
4、项目编译配置
配置项中的:PATH.../opencv_contrib/modules,需要更换为扩展包的目录
配置参数说明
cmake -D CMAKE_BUILD_TYPE=RELEASE 这样产生的makefile文件make生成的可执行文件就带有调试信息,供gdb和gdbserver使用了。
CMAKE_BUILD_TYPE 的值可以为Release或者Debug。
CMAKE_INSTALL_PREFIX=/usr/local ..
INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及文件、目录、脚本等。 这里就是提前设置好编译到的路径!
5、编译及安装
make -j16
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=PATH.../opencv_contrib/modules \
-D PYTHON3_LIBRARY=`python -c 'import subprocess ; import sys ; s = subprocess.check_output("python-config --configdir", shell=True).decode("utf-8").strip() ; (M, m) = sys.version_info[:2] ; print("{}/libpython{}.{}.dylib".format(s, M, m))'` \
-D PYTHON3_INCLUDE_DIR=`python -c 'import distutils.sysconfig as s; print(s.get_python_inc())'` \
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON ..
sudo make install
6、M1芯片配置编译及安装
arch -arm64 cmake
-DCMAKE_SYSTEM_PROCESSOR=arm64
-DCMAKE_OSX_ARCHITECTURES=arm64
-DWITH_OPENJPEG=OFF
-DWITH_IPP=OFF
-D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D OPENCV_EXTRA_MODULES_PATH=/Users/forrest/Documents/forrest/svn/opencv/opencv_contrib/modules
-D PYTHON3_LIBRARY=python -c 'import subprocess ; import sys ; s = subprocess.check_output("python-config --configdir", shell=True).decode("utf-8").strip() ; (M, m) = sys.version_info[:2] ; print("{}/libpython{}.{}.dylib".format(s, M, m))'
-D PYTHON3_INCLUDE_DIR=python -c 'import distutils.sysconfig as s; print(s.get_python_inc())'
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python
-D BUILD_opencv_python2=OFF
-D BUILD_opencv_python3=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D INSTALL_C_EXAMPLES=OFF
-D OPENCV_ENABLE_NONFREE=ON
-D BUILD_ZLIB=OFF
-D BUILD_EXAMPLES=ON ..
arch -arm64 make -j8
arch -arm64 sudo make install
编译错误:modules/imgcodecs/CMakeFiles/opencv_imgcodecs.dir/all Error 2
四、项目运行
1、创建项目
MacOpenCV 项目
打开Xcode,建立一个macOS平台的终端项目。 New Project -> macOS -> Command Line Tool
项目名称,例如:MacOpenCV, 语言选择:C++, 如下图:
2、项目配置
选择 .xcodeproj 文件,然后在 build Settings 中,搜索 “Search Path”,分别设置下面两项:
Header Search Paths: 这是头文件的路径 /usr/local/include/opencv4
Library Search Paths:这是库文件的路径 /usr/local/lib
接下来设置 Other Linker Flags,具体内容可使用pkg-config来查看。使用 pkg-config --cflags --libs opencv 可以查看所有链接标记。
报错参考:Package opencv was not found in the pkg-config search path.
新建文件: /usr/local/lib/pkgconfig/opencv.pc
内容:
prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Name: opencv
Description: The opencv library
Version:4.5.5
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
然后将文件导入到环境变量:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
pkg-config --cflags --libs opencv
-I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
当前添加:最好把其他的都添加上避免报错后再添加
-lopencv_core
-lopencv_highgui
-lopencv_imgcodecs
3、测试代码
运行参考添加图片目录:$(SRCROOT)/MacOpenCV/rising_sun.jpg
项目代码:
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
int main(int argc, const char * argv[]) {
std::cout << "Hello, World!\n";
// 通过运行参数获取图片路径
std::string filePath(argv[1]);
std::cout << "Image path:" << filePath << std::endl;
std::string image_path = samples::findFile(filePath);
Mat img = imread(image_path, IMREAD_COLOR);
if(img.empty()) {
std::cout << "Could not read the image: " << image_path << std::endl;
return 1;
}
imshow("Display window", img);
waitKey(0); // Wait for a keystroke in the window
return 0;
}
运行效果:
五、参考资料
opencv/opencv: Open Source Computer Vision Library (github.com)
MacOS Catalina编译安装openCV 4.2.0
mac上安装编译opencv4.3.0及opencv-contrib-4.3.0
Mac上OpenCV的安装与运行
Mac Xcode opencv C++环境配置
How to develop an OpenCV C++ algorithm in Xcode | by Anurag Ajwani | Medium
Mac M1 安装配置opencv详细教程 - 简书 (jianshu.com)
引用chatGPT作答,这个错误通常发生在您正在使用 Xcode 编译和运行 OpenCV 库时,这时候系统提示说找不到相关的库文件。以下是一些可能的解决方案:
1.确保您已正确安装 OpenCV 库。如果您没有安装 OpenCV 库,请先下载并按照官方文档进行安装。
2.检查您的 Xcode 项目设置。确保您已正确配置了 OpenCV 库的路径。具体来说,在项目设置中,打开“Build Settings”选项卡,搜索“Header Search Paths”和“Library Search Paths”,并确保这些路径包含了 OpenCV 库的路径。
3.检查您的环境变量。确保您已将 OpenCV 库的路径添加到了 LD_LIBRARY_PATH 环境变量中。您可以通过终端输入以下命令来查看当前环境变量:
echo $LD_LIBRARY_PATH
如果输出为空,则需要将 OpenCV 库的路径添加到环境变量中。您可以在终端中输入以下命令:
export LD_LIBRARY_PATH=/path/to/opencv/lib:$LD_LIBRARY_PATH
将 /path/to/opencv/lib 替换为您实际的 OpenCV 库的路径。
4.如果您使用的是 Xcode 10 或更高版本,请尝试在“Build Phases”选项卡中添加“Copy Files”构建阶段,并将“Destination”设置为“Frameworks”。然后将 OpenCV 库添加到“Copy Files”构建阶段中。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个问题可能是由于 Xcode 无法正确加载 OpenCV 库文件所引起的。可能的解决方法有:
设置 Xcode Build Settings
在 Xcode 中,打开 Build Settings,找到"Search Paths"下的"Library Search Paths"并添加以下路径:
/usr/local/lib
安装 OpenCV
确保您已正确安装了 OpenCV。您可以使用 Homebrew 进行安装,使用以下命令:
brew install opencv
export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH
为了使这些更改永久生效,可以将它们添加到 .bash_profile 文件中。
检查编译选项
在编译选项中检查您是否正确链接了 OpenCV 库文件。如果您使用 CMake 构建项目,请确保已正确设置 FIND_PACKAGE(OpenCV REQUIRED) 和 TARGET_LINK_LIBRARIES(your_project ${OpenCV_LIBS}) 。
检查 OpenCV 版本
请确保您的测试代码与您安装的 OpenCV 版本相匹配。如果您使用的是 OpenCV 4.x 版本,您可能需要使用新的 API 调用。
以下是使用 OpenCV 进行图像读取和显示的 Python 代码示例:
import cv2
img = cv2.imread('test.jpg')
cv2.imshow('Image', img)
cv2.waitKey(0)
希望以上解决方法能够帮助到你。
如果我的回答解决了您的问题,请采纳!
根据参考资料中提供的Xcode项目配置方法,应该按照以下步骤来解决问题:
找到Xcode工程的“Search Paths”选项,添加相关目录:
Header Search Paths —— 添加 “/usr/local/include/opencv4”
Library Search Paths —— 添加"/usr/local/lib"和"/usr/local/Cellar/opencv/4.1.0_2/lib"
右键工程新建一个文件夹(Group),将“/usr/local/Cellar/opencv/4.1.0_2/lib”文件夹中的"*.dylib"文件拖拽进去。
具体来说,可以按照以下步骤操作:
以上步骤经常可以解决大多数Mac Xcode中使用OpenCV出现的Library not loaded报错。如果还是有问题,可能需要针对具体的错误信息进行更进一步的排查和修复,提供更多的信息如具体错误信息可以协助更精确的解决问题。