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

opencv学习(图像读取)

目录

1.用cv2.imread()函数读取图像,

2.用cv2.imwrite()函数将图像数据保存到指定路径

3.打印图像(没有函数调用)

4.打印图像(函数调用)

5.重点区别cv2.imshow(),plt.imshow()和plt.shoow()


1.用cv2.imread()函数读取图像,若需要改换灰度图像,用函数cv2.IMREAD_GRAYSCALE,如img=cv2.imread("sea.jpeg",cv2.IMREAD_GRAYSCALE)


2.用cv2.imwrite()函数将图像数据保存到指定路径,如print(cv2.imwrite("C:\\Users\\DELL\\.conda\\envs\\oprncv\\venv\\sea.jpeg", img))
第一个参数是要保存的文件路径和文件名,第二个参数是要保存的图像数据,用print()来输出布尔值,反映保存成功与否。


3.打印图像(没有函数调用):
用cv2.imshow()函数去绘制画布,两个参数与cv2.imwrite()一样。
用cv2.waitKey()设置图像呈现的时间,一般为0
用cv2.destroyAllWindows()来关闭所有由 OpenCV 创建的窗口的函数。


4.打印图像(函数调用)
创建函数 def cv__show(name,img)【回看图像读取与部分处理.py文件的12--28行】

创建简单函数并调用函数
def cv__show(name, img):cv2.imshow(name, img)cv2.waitKey(0)
cv__show("C:\\Users\\DELL\\.conda\\envs\\oprncv\\venv\\sea.jpeg",img)复杂函数调用的方法:
def learn_to_code():print("You can learn to code for free on freeCodeCamp")def learn_what_language():print("You can learn any programming language on the freeCodeCamp YouTube channel")learn_what_language()learn_to_code()

5.重点区别cv2.imshow(),plt.imshow()和plt.shoow()

(1)cv2.imshow()和plt.imshow()的区别:
颜色通道顺序不同:
    cv2.imshow():
        OpenCV 读取图像时默认使用BGR(蓝 - 绿 - 红)通道顺序,与图像的原始存储格式一致。因此cv2.imshow()直接显示 BGR 格式图像,颜色表现正常。
    plt.imshow():
        Matplotlib 默认期望图像为RGB(红 - 绿 - 蓝)通道顺序。如果直接显示 OpenCV 读取的 BGR 图像,会出现颜色偏差(如蓝色和红色互换)。
    解决方法:需要先用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)转换通道顺序。
窗口控制方式不同:
    cv2.imshow():
        显示图像后,必须配合cv2.waitKey()使用(否则窗口会一闪而逝),例如cv2.waitKey(0)表示等待用户按键后关闭。
        关闭窗口需调用cv2.destroyAllWindows(),否则窗口可能残留。
        支持通过窗口名称单独控制(如cv2.imshow("window1", img))。
    plt.imshow():
        显示图像需配合plt.show(),无需额外等待函数。
        窗口由 Matplotlib 自身管理,关闭窗口后自动释放资源。
        支持在同一张图上叠加绘制(如添加坐标轴、文字等)。
适用场景不同:
    cv2.imshow():
        适合 OpenCV 图像处理流程中的快速预览,尤其在实时视频处理(如摄像头采集)中表现更高效。
    plt.imshow():
        适合需要精细化展示(如添加标注、对比多幅图像、调整坐标轴)的场景,常用于数据分析和可视化报告。

代码示例:

import cv2
import matplotlib.pyplot as plt
# 读取图像(OpenCV默认BGR格式)
img = cv2.imread("image.jpg")
# 使用cv2显示(正常颜色)
cv2.imshow("OpenCV Window", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 使用matplotlib显示(需转换为RGB)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)
plt.axis('off')  # 隐藏坐标轴
plt.show()
(2)plt.imshow()和plt.how()的区别:
在 Matpotlib 中,plt.imshow() 和 plt.show() 是两个与图像显示相关的核心函数,但它们的功能和用途截然不同:

1. plt.imshow():绘制图像到画布

作用:将图像数据(通常是二维或三维数组)加载并绘制到当前的 Matplotlib 画布(figure)上,但不会直接显示图像窗口。

参数:主要接收图像数据(如 NumPy 数组),还可通过 cmap 等参数指定颜色映射(如灰度图 cmap='gray')。

适用场景:用于 “绘制” 图像内容,是显示图像的 “准备工作”。

示例:

import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机的2D数组(模拟图像)
img = np.random.rand(100, 100)  # 100x100的随机数组
plt.imshow(img, cmap='gray')  # 将数组绘制为灰度图(仅绘制,不显示窗口)

2. plt.show():显示画布上的内容

作用:触发图像窗口的显示,将之前所有通过 plt.imshow()、plt.plot() 等函数绘制在画布上的内容实际展示出来。

特点: 通常放在代码的最后调用,一次性显示所有已绘制的内容。 在脚本中,plt.show() 会阻塞程序运行,直到关闭图像窗口。 在 Jupyter notebook 中,若设置了 %matplotlib inline,可能不需要显式调用也能显示,但建议保留以确保兼容性。

示例(接上面的代码):

import matplotlib.pyplot as plt
import numpy as np
# 创建一个随机的2D数组(模拟图像)
img = np.random.rand(100, 100)  # 100x100的随机数组
plt.imshow(img, cmap='gray')  # 绘制图像
plt.title("Random Image")     # 可以添加标题等装饰
plt.show()                    # 显示图像窗口(此时才会看到图像)

http://www.dtcms.com/a/294639.html

相关文章:

  • CPU,减少晶体管翻转次数的编码
  • haproxy算法
  • LSTM学习笔记
  • unity小:webgl开发注意事项(持续更新)
  • 2025年7月Nature子刊-Adam梯度下降优化算法Adam Gradient Descent-附Matlab免费代码
  • CVE-2025-32463漏洞:sudo权限提升漏洞全解析
  • OpenLayers 快速入门(五)Controls 对象
  • 西安旅游行业从业者:凤凰新闻怎么发稿有哪些注意事项
  • 编程日常开发工具整理
  • 智能工具重塑光伏设计:精准、高效与科学的融合
  • 第二章 W55MH32 DHCP示例
  • 安卓项目--基于百度云的人脸识别考勤系统
  • 基于沁恒微电子CH32V307单片机使用
  • 前端项目下载发票pdf文件要求改文件名笔记
  • LLM指纹底层技术——模型压缩与优化
  • Windows安装git教程(图文版)
  • 批量剪辑矩阵分发系统源码搭建,支持OEM
  • 电机驱动-理论学习-FOC算法理解
  • [硬件电路-73]:模拟器件 - 什么是电路的信号振铃现象?其根本原因?如何解决?
  • 逆向入门(41)程序逆向篇-crackme
  • Rocky9.4部署Zabbix7
  • WebGIS 中常用公共插件
  • 星座占卜信息分享静态网站项目练习!
  • 【大模型文生图、文生音频实战Demo】基于Spring AI Alibaba和阿里百炼大模型实现文生图、文生视频
  • LeetCode 407:接雨水 II
  • 网络编程初识(详细易懂)
  • [强网杯 2019]高明的黑客
  • iOS加固工具有哪些?企业级团队协作视角的实战分析
  • 【浏览器插件冲突】Edge浏览器加载不出来CSDN创作者中心
  • SpringBoot07-数据层的解决方案:SQL