【OpenCV】P1 开发环境搭建 + 图像处理基础(待完成)

news/2024/7/21 4:18:45 标签: opencv, 图像处理, 人工智能

目录

  • OpenCV 简介
  • 图像处理基础
    • 读取图像
    • 显示图像
    • 保存图像

OpenCV is the word’s biggest computer vision library.
It’s open source, contains over 2500 algorithms and is operated by the non-profit Open Source Vision Foundation.
– From opencv.org

OpenCV 简介

Opencv 库由 CC++ 语言编写,涵盖计算机视觉各个领域内的 2500 多个函数,可以在多种操作系统上运行。其旨在提供一个简洁而又高效的接口,从而帮助开发人员快速地构建视觉应用。

OpencvIntel 开发,是世界上最大、最著名的计算机视觉图像库。很多做计算机视觉的商业公司,都是在他的基础上做出的商业解决方案。而 Opencv ,更像是一个黑盒,让我们专注于视觉应用的开发,而不必过多关注基础图像处理的具体细节。

Opencv 能干什么?
答:目标识别(人脸识别、车辆识别、物体分类)、自动驾驶(车道检测、自动驾驶、车道保持等等)、医学图像分析、视频内容理解(可理解非结构化数据)。

Python OpenCV 库下载

# FOR ANACONDA PROMPT
pip install opencv-python

Python 中使用 Opencv

import cv2
# 注意是cv2而不是opencv

图像处理基础

图像处理过程中,包含:读取图像显示图像保存图像 这三个最基本的操作。本文剩余部分将简单的介绍实现这三个操作,后续博文将做详细介绍。

读取图像

OpenCV 提供函数 cv2.imread() 来读取图像;
该函数的一般形式如下:

image_arr = cv2.imread(filename, flags)
  • filename:要读取的图像文件路径;
  • flags:可选参数,用于指定如何读取图像:
    • cv2.IMREAD_COLOR:默认值,读取 RGB 三通道图像;
    • cv2.IMREAD_GRAYSCALE:读取图像,并调整为单通道的灰度图像;
    • cv2.IMREAD_UNCHANGED:读取图像,保持原始所有通道信息;

读取图像后,该图像将以数字矩阵的形式保存在内存中的 image_arr 变量中。这个数字矩阵包含了图像的像素信息,可以进行各种图像处理和分析操作,如后续博文将会讲到的图像转换、滤波、边缘检测等。

e . g . e.g. e.g. 读取一张图像以及其灰度图矩阵信息;

import cv2
image_arr_1 = cv2.imread("universe.jpg")
image_arr_2 = cv2.imread("universe.jpg", cv2.IMREAD_GRAYSCALE)
print("原图矩阵为:", image_arr_1)
print("灰度图矩阵为:", image_arr_2)

显示图像

在完成图像处理操作后,如果你想展示图像的样子,可以使用 OpenCV 提供的 imshow() 函数。这个函数会显示一个窗口,其中包含了处理后的图像。

import cv2

# 读取图像
image_arr = cv2.imread('universe.jpg', cv2.IMREAD_UNCHANGED)

# 展示图像
cv2.imshow('Image Of Universe', image_arr)

# 等待用户输入,0 表示永久等待
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

保存图像

OpenCV 使用 imwrite() 函数可以实现图像的保存。该函数接收四个参数:输入图像、保存的文件路径、图像的编码方式以及图像的质量分数(可选)。

e . g . e.g. e.g. 以下是使用 Python 进行图像保存的示例代码:

import cv2

# 读取图像
img = cv2.imread('universe.jpg')

# 设置保存图像的路径、编码方式以及质量分数(可选)
save_path = 'output.jpg'
encodeing = cv2.IMREAD_COLOR  # 图像编码方式,可选CV2_IMREAD_GRAYSCALE为灰度图像
quality = 95  # 图像质量分数,可选,默认为95

# 保存图像
cv2.imwrite(save_path, img, encodeing, quality)

http://www.niftyadmin.cn/n/5340567.html

相关文章

C语言常见面试题:什么是宏,宏的作用是什么?

宏在计算机科学中是一种批量处理程序命令,它是一种抽象的规则或模式,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。在编译时,预处理器会对宏进行…

记录一次从有道云笔记迁移到语雀笔记

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 1、安装git,python3等准备工作 文章中标注python3,为避免与python2 冲…

C++入门学习(十二)字符串类型

上一节(C入门学习(十一)字符型-CSDN博客)中我们学到如何表示和使用一个字符串,本篇文章是字符串(多个字符)。 定义字符串主要有两种方式: 第一种: char str[] "…

问题解决:django模型查询报错,找不到数据库表

django项目,使用的postgresql数据库,建了多个模式,模型查询时一直默认查public的表 1. 问题: django.db.utils.ProgrammingError: relation "ip_management_app.table" does not exist 2. 代码: class …

Tomcat目录和文件

打开tomcat的解压之后的目录可以看到如下的目录结构: Bin bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)。 …

【Java 设计模式】行为型之命令模式

文章目录 1. 定义2. 应用场景3. 代码实现结语 命令模式(Command Pattern)是一种行为型设计模式,用于将请求封装为对象,使得可以参数化客户端对象,并且能够排队、记录请求,以及支持撤销操作。在本文中&#…

单点安装3.6.23_ubuntu18.04

系统参数配置 操作系统主机命名 hostnamectl set-hostname dbatest01 /etc/hosts配置 cp /etc/hosts /etc/hosts.bak cat >>/etc/hosts<<EOF 10.0.0.31 dbatest01 EOF limits.conf echo add by mongodb >> /etc/security/limits.conf echo m…

力扣hot100 环形链表 快慢指针 计步器

Problem: 141. 环形链表 文章目录 思路&#x1f496; 快慢指针法&#x1f496; 计步器法 思路 &#x1f468;‍&#x1f3eb; 参考题解 &#x1f496; 快慢指针法 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) /*** Definition for singly-linked list…