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

OpenCV影像数据处理入门-学习篇

目录

  1. 简介
  2. 如何安装
  3. 图像数据处理简单操作
  4. 视频数据处理简单操作

一、简介

在计算机视觉项目的开发中,OpenCV作为最大众的开源库,拥有了丰富的常用图像处理函数库,可用于开发实时的图像处理、计算机视觉以及模式识别程序。采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易干上手,让开发人员更多的精力花在算法的设计上

本文将主要介绍OpenCV开发的一些基础知识、入门上手的方法与步骤等,

OpenCV 常用链接:
OpenCV 官网
OpenCV GitHub 主页
OpenCV 中国 Wiki 论坛

二、如何安装

打开你的PyCharm点开terminal控制台
在这里插入图片描述
先输入 pip list 查看是否安装的有 opencv-python
如果没有,输入以下命令安装:

pip install opencv-python

在这里插入图片描述
再输入 pip list 查看是否成功安装 opencv-python

三、 图像数据处理

  1. 加载图片和展示图片
    获取本地一张图片,将图片以彩色和灰色展示出来

Python代码如下:

import cv2
#定义一个图片地址
img_path = r'./11.jpg'

#以彩色模式读取图片 cv2.IMREAD_COLOR
image_color = cv2.imread(img_path,cv2.IMREAD_COLOR)
#以灰度模式读取图片
image_gray = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)
#显示图片
cv2.imshow('color image',image_color)
cv2.imshow('gray image',image_gray)

#等待用户按键,然后关闭窗口,不写下面方法,图片会闪一下退出,不会停留
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下:
在这里插入图片描述

  1. 图片缩放
    获取本地一张图片,将图片以0.75倍比例显示出来
    Python代码如下:
import cv2
#读取图片
image = cv2.imread('./11.jpg')
#检查图片是否正常加载
if image is None:
    print("Error:Could not load image")
    exit()

#获取图片的原始尺寸
#image.shape[:2] 意思是正常图片会有 (高,宽,通道)属性 通道属性不用修改,只取前两个属性
original_height,original_width = image.shape[:2]
#计算新的尺寸
new_width =  int(original_width * 0.75)
new_height = int(original_height * 0.75)
#使用cv2.resize进行图片缩放  image原图片  dsize新尺寸  interpolation压缩时候使用area差值算法
resized_image = cv2.resize(image, (new_width, new_height), interpolation = cv2.INTER_AREA)
#显示原始图片和缩放后的图片
cv2.imshow("Original Image", image)
cv2.imshow("Resized Image", resized_image)
#等待用户按键,然后关闭窗口,不写下面方法,图片会闪一下退出,不会停留
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下:
在这里插入图片描述
3. 图片翻转
获取本地一张图片,将图片以翻转90度、180度、270度展示出来
Python代码如下:

import cv2
#读取图片
image = cv2.imread("./11.jpg")
#使用cv2.rotate()函数旋转图片
rotate_90 = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) #顺时针旋转90度
rotate_180 = cv2.rotate(image, cv2.ROTATE_180) #顺时针旋转180度
rotate_270 = cv2.rotate(image,cv2.ROTATE_90_COUNTERCLOCKWISE) #顺时针旋转270度

cv2.imshow('original',image)
cv2.imshow('rotate_90',rotate_90)
cv2.imshow('rotate_180',rotate_180)
cv2.imshow('rotate_270',rotate_270)
cv2.waitKey(0)

结果如下:
在这里插入图片描述

  1. 图片保存
    读取一张图片,将图片保存下来

Python代码如下:

import cv2
#获取本地图片
image = cv2.imread("./11.jpg")
#如果图像不为空,则保存图像
if image is not None:
    cv2.imwrite("./output_image.jpg", image)
else:
    print("无法读取图像")

四、视频数据处理

  1. 读取摄像头/视频
    打开电脑摄像头,一帧一帧展示画面

Python代码如下

import cv2

#创建一个 VideoCapture 对象,参数 0 表示使用默认的摄像头,也可以传入一个视频文件的路径
cap = cv2.VideoCapture(0) #打开电脑的摄像头
while True: #读取摄像头里的信息
    #读取一帧 数据在frame中存储 ret是用来判断有没有读取成功
    ret, frame = cap.read()
    #如果读取成功,显示这一帧
    if ret:
        cv2.imshow('frame', frame)

    #按‘q’键退出循环 waitKey加的延时,画面之间至少要间隔1ms
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
#释放资源并关闭窗口
cap.release()
cv2.destroyWindow(frame)

结果如下:
在这里插入图片描述
如需打开本地视频,修改:

cap = cv2.VideoCapture("./piano.mp4") #打开本地视频
  1. 录制电脑摄像视频保存到本地
    保存电脑摄像头的每一帧,输出到本地MP4文件中

Python代码如下

import cv2
#定义视频捕捉对象
cap = cv2.VideoCapture(0)

#检查是否成功打开摄像头
if not cap.isOpened():
    print("Error opening video stream or file")
    exit()

#获取摄像头的帧宽度和帧高度
frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

#定义视频编码器和输出文件
fourcc = cv2.VideoWriter_fourcc(*'mp4v') #保存成MP4文件
out = cv2.VideoWriter("./output.mp4",fourcc,20.0,(frame_width,frame_height)) #帧率为20.0fps

while True:
    ret, frame = cap.read()
    if not ret:
        print("Error reading video stream or file")
        break

    #将当前帧写入输出视频文件
    out.write(frame)
    #显示当前帧
    cv2.imshow('frame',frame)
    # 按‘q’键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

#释放资源并关闭窗口
cap.release()
out.release()
cv2.destroyAllWindows()

在这里插入图片描述


http://www.kler.cn/news/302299.html

相关文章:

  • vue环境搭建相关介绍
  • 在pycharm终端中运行pip命令安装模块时,出现了“你要如何打开这个文件”弹出窗口,是什么状况?
  • Vue基础明晰
  • chatGPT o1 重磅发布!像人类大脑一样思考和推理!
  • 快速入门和简单理解并发编程中的并发、并行、同步、异步,并且简单实现多进程和多线程
  • JS设计模式之代理模式:对象的“虚拟与现实”
  • 基于51单片机的灯盘检测(PCF8591+CD4051 )
  • mp3转文字要怎么处理?使用这4个工具就对了
  • C# 中的矢量化运算:提升性能的艺术
  • OpenHarmony鸿蒙开发( Beta5.0)智能窗帘应该开发实践案例
  • 算法刷题[比较两个字符串的最大公字符串(滑动窗口实现)]
  • 基于Boost库的搜索引擎开发实践
  • OpenFeign原理
  • docker-ce.repo源、kubernetes.repo源
  • 通过AI来创建一个_____html css网页制作成品 例子演示
  • 精准电商营销:基于京东商品详情API返回值的数据分析
  • 探索Python中的链式赋值、系列解包赋值与常量
  • Vue.js中computed的使用方法
  • Minio笔记-Centos搭建Minio
  • pgAdmin 4备份数据库失败,解决
  • 武汉墨家人俱乐部
  • 计算机毕业设计选题推荐-校园车辆管理系统-Java/Python项目实战(亮点:数据可视化分析、账号锁定)
  • 如何为 MongoDB 3.0.4 以下版本选择合适的 PyMongo 版本
  • 第10章 中断和动态时钟显示
  • 零基础5分钟上手亚马逊云科技-为网站服务器配置DNS域名
  • 基础的八股
  • Go语言现代Web开发03 关键字和包以及基本数据类型
  • word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32
  • PHP精准投放高效转化微信代金券发券系统小程序源码
  • QuecPythonHeliosSDK 使用介绍