OpenCV入门系列 —— 加载并展示图片

  • 前言
  • 程序说明
  • 输出结果
  • 代码示例
  • 总结



前言

随着工业自动化、智能化的不断推进,机器视觉(2D/3D)在工业领域的应用和重要程度也同步激增(识别、定位、抓取、测量,缺陷检测等),而针对不同作业场景进行解决方案设计时,通常会借助PCL、OpenCV、Eigen等简单方便的开源算法库进行方案的快速验证和迭代以满足作业场景下的目标需求。

为了让对工业机器视觉方向感兴趣的同学能够少走一些弯路,故推出了此一系列简易入门教程示例,让初次使用者能够最简单直观地感受到当前所用算法模块的执行效果。

后续会逐步扩增与工业机器视觉相关的一些其它内容,如:

项目案例剖析场景数据分析基础算法模块相机评测 等;

程序说明

以不同的模式加载并可视化一张本地图片;

输出结果

opencv 在YUV格式图片上画框 opencv展示图片_加载

代码示例

/*
 * @File: show_image.cpp
 * @Brief: opencv course
 * @Description: 简单展示加载并可视化一张图片
 * @Version: 0.0.1
 * @Author: MuYv
 */
#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>



int main(int argc, char** argv){
    if(argc != 2){
        std::cout<<"Usage: exec img_file_path"<<std::endl;
        return -1;
    }
    const std::string kImgFilePath = argv[1];   // "../imgs/fruit2.jpg"

    // 加载为 rgb 3通道彩色图数据
    cv::Mat img_color = cv::imread(kImgFilePath, cv::IMREAD_COLOR);
    // 加载为灰度图
    cv::Mat img_gray = cv::imread(kImgFilePath, cv::IMREAD_GRAYSCALE);
    // 按照原始格式加载
    cv::Mat img_unchanged = cv::imread(kImgFilePath, cv::IMREAD_UNCHANGED);  // 常用于加载depth深度图数据

    cv::imshow("img_color", img_color);
    cv::imshow("img_gray", img_gray);
    cv::imshow("img_unchanged", img_unchanged);

    // 等待n毫秒后关闭窗口,0代表一直开启,直到任意按键触发关闭窗口
    cv::waitKey(0);

    return 0;
}

总结

加载图片数据时,若不指定加载模式,默认是加载为彩色图;
一般需按照作业需求(如灰度图、depth数据、二值图等),明确指定加载模式;
若是基于windows+VS进行开发,可安装ImageWatch插件,对cv::Mat对象变量进行debug可视化;