当前位置: 首页 > news >正文

ubuntu22.04@laptop OpenCV Get Started: 001_reading_displaying_write_image

ubuntu22.04@laptop OpenCV Get Started: 001_reading_displaying_write_image

  • 1. 源由
  • 2. Read/Display/Write应用Demo
    • 2.1 C++应用Demo
    • 2.2 Python应用Demo
  • 3. 过程分析
    • 3.1 导入OpenCV库
    • 3.2 读取图像文件
    • 3.3 显示图像
    • 3.4 保存图像文件
  • 4. 总结
  • 5. 参考资料

1. 源由

读、写、显示图像作为计算机视觉OpenCV最为基础的操作,接下来了解熟悉下其API。

2. Read/Display/Write应用Demo

001_reading_displaying_write_image是OpenCV图像读写、显示例程。

2.1 C++应用Demo

C++应用Demo工程结构:

001_reading_displaying_write_image/CPP$ tree .
.
├── CMakeLists.txt
├── grayscale_image.jpg
├── read_display_write_opencv.cpp
└── test.jpg0 directories, 4 files

确认OpenCV安装路径:

$ find /home/daniel/ -name "OpenCVConfig.cmake"
/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/
/home/daniel/OpenCV/opencv/build/OpenCVConfig.cmake
/home/daniel/OpenCV/opencv/build/unix-install/OpenCVConfig.cmake$ export OpenCV_DIR=/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/

C++应用Demo工程编译执行:

$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/read_display_write

2.2 Python应用Demo

Python应用Demo工程结构:

001_reading_displaying_write_image/Python$ tree .
.
├── grayscale.jpg
├── read_display_write_opencv.py
├── requirements.txt
└── test.jpg0 directories, 4 files

Python应用Demo工程执行:

$ workoncv-4.9.0
$ python hello_opencv.py

3. 过程分析

整个应用分为四个步骤:

  1. 导入OpenCV库
  2. 读取图像文件
  3. 显示图像
  4. 保存图像文件

3.1 导入OpenCV库

C++:

//Include Libraries
#include<opencv2/opencv.hpp>
#include<iostream>// Namespace nullifies the use of cv::function(); 
using namespace std;
using namespace cv;

Python:

# import the cv2 library 
import cv2

3.2 读取图像文件

C++:

// Read an image 
Mat img_color = imread("test.jpg", IMREAD_COLOR);
Mat img_grayscale = imread("test.jpg", IMREAD_GRAYSCALE);
Mat img_unchanged = imread("test.jpg", IMREAD_UNCHANGED);or
Mat img_color = imread("test.jpg", 1);
Mat img_grayscale = imread("test.jpg", 0);
Mat img_unchanged = imread("test.jpg", -1);

Python:

# Read an image
img_color = cv2.imread('test.jpg',cv2.IMREAD_COLOR)
img_grayscale = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE)
img_unchanged = cv2.imread('test.jpg',cv2.IMREAD_UNCHANGED)or
img_color = cv2.imread('test.jpg',1)
img_grayscale = cv2.imread('test.jpg',0)
img_unchanged = cv2.imread('test.jpg',-1)

3.3 显示图像

C++:

// Create a window.
namedWindow( "color image", WINDOW_AUTOSIZE );
namedWindow( "grayscale image", WINDOW_AUTOSIZE );
namedWindow( "unchanged image", WINDOW_AUTOSIZE );// Show the image inside it.
imshow( "color image", img_color ); 
imshow( "grayscale image", img_grayscale );
imshow( "unchanged image", img_unchanged ); // Wait for a keystroke.   
waitKey(0);  // Destroys all the windows created                         
destroyAllWindows();

Python:

#Displays image inside a window
cv2.imshow('color image',img_color)  
cv2.imshow('grayscale image',img_grayscale)
cv2.imshow('unchanged image',img_unchanged)# Waits for a keystroke
cv2.waitKey(0)  # Destroys all the windows created
cv2.destroyAllwindows() 

3.4 保存图像文件

C++:

imwrite("grayscale.jpg", img_grayscale);

Python:

cv2.imwrite('grayscale.jpg',img_grayscale)

4. 总结

主要通过以下三个函数API实现:

  1. imread() - 读取图像文件
  2. imshow() - 显示图像
  3. imwrite() - 保存图像文件

在这里插入图片描述

其他API函数:

  • waitKey() - 等待按键操作
  • destroyAllWindows() - 类似析构函数

5. 参考资料

【1】ubuntu22.04@laptop OpenCV Get Started
【2】ubuntu22.04@laptop OpenCV安装
【3】ubuntu22.04@laptop OpenCV定制化安装

http://www.lryc.cn/news/296495.html

相关文章:

  • 51单片机之LED灯模块篇
  • springboo冬奥会科普平台源码和论文
  • 改进神经网络
  • HarmonyOS 开发学习笔记
  • maven java 如何打纯源码zip包
  • Altium Designer(AD)原理图库添加阵列管脚图文教程及视频演示
  • P3647 题解
  • Vivado Tri-MAC IP的例化配置(三速以太网IP)
  • 交友系统---让陌生人变成熟悉人的过程。APP小程序H5三端源码交付,支持二开。
  • uni-app 经验分享,从入门到离职(三)——关于 uni-app 生命周期快速了解上手
  • PostgreSQL 与 MySQL 相比,优势何在?
  • Linux(三)--文件系统
  • DC-8靶机渗透详细流程
  • SolidWorks学习笔记——入门知识2
  • Elasticsearch:通过 ingest pipeline 对大型文档进行分块
  • 数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)
  • Bug2- Hive元数据启动报错:主机被阻止因连接错误次数过多
  • HarmonyOS 鸿蒙应用开发(十、第三方开源js库移植适配指南)
  • Docker- chapter 1
  • 解决IntellIJ Idea内存不足
  • 【网络技术】【Kali Linux】Nmap嗅探(二)多设备扫描
  • 简化版SpringMVC
  • Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。
  • 【AMI】2400 环境安装步骤
  • AI:124-基于深度学习的人体遮挡物体重建技术
  • 23种设计模式之单例模式
  • leetCode 30天
  • vue3+vite+ts 配置commit强制码提交规范配置 commitlint
  • PlateUML绘制UML图教程
  • 自然语言处理(NLP)——使用Rasa创建聊天机器人