ubuntu 安装OpenCV:
sudo apt install libopencv-dev
文件结构:ce.cpp、CMakeLists.txt、./media/cat.jpg
CMakeLists.txt 内容:
#6.build_together/CMakeLists.txt`
# 最低版本要求
cmake_minimum_required(VERSION 3.10)
# 项目信息
project(demo_opencv)
# 查找opencv库
find_package(OpenCV REQUIRED)
# 给自己写个提示 也方便查找报错原因
if (openCV_FOUND)
# 找到后打印一些信息
message(STATUS "openCV library status:")
message(STATUS " version: ${OpenCV_VERSION}") # 版本
message(STATUS " libraries: ${OpenCV_INCLUDE_DIRS}") # 库名称
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}") # 库的路径
else()
# 找不到
message(STATUS "openCV library status:")
endif()
# 添加可执行文件
add_executable(open_domo "./ce.cpp")
# 添加头文件
target_include_directories(open_domo PRIVATE ${OpenCV_INCLUDE_DIRS})
# 添加链接
target_link_libraries(open_domo PRIVATE ${OpenCV_LIBS})
ce.cpp 内容:
#include <iostream>
#include <opencv2/opencv.hpp>
int main(int argc, char **argv)
{
// 若 输入参数数量不为2 则断定输入参数错误
if (argc != 2)
{
return 1;
}
// 使用imread函数读取图片,和Python用法类似
// 读取的数据保存在Mat类型的变量image中,Mat是opencv中的图像数据结构,类似numpy中的ndarray
// cv::Mat image = cv::imread("./media/cat.jpg"); // 在终端输入命令: ./build/open_domo ./media/cat.jpg
// cv::Mat image = cv::imread("./media/cat.jpg", 0); // 0代表 直接加载灰度图
cv::Mat image = cv::imread(argv[1]);
// 判断图像是否读取成功,返回true表示失败
if (image.empty()) // 使用!image.data也可以判断
{
std::cout << "无法读取图片" << std::endl;
return 1;
}
std::cout << "图片高度: " << image.rows << "宽度: " << image.cols << std::endl;
//标志位
// std::cout << "flags:" << image.flags << std::endl;
//图像尺寸
// std::cout << "size:" << image.size << std::endl;
// 图像通道数
//std::cout << "channels" << input_image.channels() << std::endl;
//维度
// std::cout << "dims:" << image.dims << std::endl;
// // 保存图像
// cv::imwrite("./gray_image.jpg", image);
// // imshow显示图像
// cv::imshow("opencv demo", image);
// // 等待按键
// cv::waitKey(0);
return 0;
}
使用cmake编译运行
cmake -S . -B build
cmake --build build
./build/open_domo ./media/cat.jpg