Python + OpenCV图片基本操作01

本文介绍了如何在Python环境中安装OpenCV库,并展示了如何进行基本的图像读取、显示、保存以及从摄像头捕获视频帧的操作。通过示例代码,解释了如何处理视频帧,并提供了从文件读取视频的代码。总结中强调了视频处理的本质是逐帧处理图片,以及OpenCV的颜色读取模式与常见应用的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

使用Python + OpenCV

一、环境

1. 安装Python。python可以根据自己的计算机系统在官网下载。

网址:https://www.python.org/downloads/Download Python | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/

2. 安装cv2。pip install opencv-python

二、图片基本操作

1.读取,显示,保存

cv2.imread("pic_file", [文件显示颜色parms])
cv2.imshow('显示pic标题', 要显示的图片)
cv2.imwrite('要保存的pic filename', 要保存的图片)

代码如下(示例):

import cv2 as cv

# 读取图片
img = cv.imread("image.png")

# 显示图片
cv.imshow("display_img", img)

# 保存图片
cv.imwrite("image.png", img)

2.从相机中读取视频

cap = cv2.VideoCapture(parm)  # parm可以是设备索引或视频文件的名称 。此处是从相机中读取,参数使用设备索引,指定哪个摄像头的数字。
ret, frame = cap.read()    # ret是一个代表是否有返回的布尔值(True/False),frame是每个返回的帧。 可以根据ret来判断视频的末尾。如果没有帧,你不会得到错误,你会得到None。

代码如下(示例):

import cv2 as cv

cap =cv.VideoCapture(0)
if not cap.isOpened():
    print("Can't open the camera")
    exit()

while True:
    ret, frame = cap.read()
    # 如果正确读取到帧,ret 为 True
    if ret:
        gray = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
        cv.imshow('frame', gray)
        if cv.waitKey(1) == ord('q'):
            break

cap.release()
cv.destroyAllWindows()

BTW, 如果从文件中读取视频,上述代码中的cap = cv.VideoCapture(0)改为如下代码:

avi_path = r"E:\tmp\1.mp4"
cap = cv.VideoCapture(avi_path)


总结

1. 视频实际上是一帧一帧地显示。对视频的处理就是对每一帧图片的处理。

2. OpenCV 将颜色读取为 BGR(蓝绿红),但大多数计算机应用程序读取为 RGB(红绿蓝)

3.

cv2.imread()读取图片,numpy.ndarray。BGR格式,0~255

读取视频中的帧文件,每一帧文件,numpy.ndarray。

cv2.imread()与cv2.COLOR_RGB2BGR一起,蓝色会变成橙色。使用PIL中的Image, 颜色正常。

代码如下:

import cv2
import numpy as np
from PIL import Image

img = cv2.imread(r"D:\TT.bmp")

# 蓝色变橙色
im_source = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("imsource", im_source)
cv2.waitKey(0)

# 蓝色显示正常
img = Image.open(r"D:\PythonWork\Contour\Photos\TT_2_1.bmp")
image = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("image", image)
cv2.waitKey(0)
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值