iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python第三方cv2库介绍
  • 406
分享到

Python第三方cv2库介绍

pythonopencv开发语言 2023-09-01 22:09:26 406人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

python第三方cv2库介绍 CV2指的是OpenCV2(Open Source Computer Vision Library),是一个开源的库平台计算机视觉库。有很强大的图片处理功能,可实现图像处理和计算机视觉方面的很多通用算法。 O

python第三方cv2库介绍

CV2指的是OpenCV2(Open Source Computer Vision Library),是一个开源的库平台计算机视觉库。有很强大的图片处理功能,可实现图像处理和计算机视觉方面的很多通用算法

OpenCV官网文档 https://docs.opencv.org/4.1.2/d6/d00/tutorial_py_root.html
中文文档http://www.woshicver.com/
 

特别提示:安装的时候用 opencv_Python,但在导入使用的时候使用 cv2。

windows环境中Python模块(库、包)安装命令格式,在cmd中:

[py -X.Y -m] pip install [-i 镜像网址] 模块(库、包)名

其中[]部分表示可选的

若安装了多个python版本,X.Y代表Python版本,多余的部分舍弃如3.8.1取3.8,3.10.5取3.10,即只取第二个点前的部分。仅安装了一个python版本不需要。

使用镜像网址可以加快安装速度,常用的镜像网址

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云Https://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

【参见https://blog.csdn.net/cnds123/article/details/104393385

我这里使用 (我安装了多个python版本 要为3.10.0版本安装cv2库——opencv_python,使用阿里云镜像。安装的时候是 opencv_python,但在导入的时候采用 import cv2。):

py -3.10 –m pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv_python

参见下图:

 最后,检测安装情况

注意:使用cv2库的时候,文件名和路径不能有中文,一旦有中文就会有各种莫名其妙的错误!

读入图片并显示

读入一张图片函数:cv2.imread(filepath,flags)  

其中filepath表示图片的路径

flags表示要读入的是什么图片:

(1)cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道(或者直接写1)

(2)cv2.IMREAD_GRAYSCALE:读入灰度图片(或者直接写0)

显示一张图片函数:cv2.imshow(window_name, image)  

其中,第一个参数是窗口的名字,第二个参数是要显示的图像

键盘绑定函数cv2.waiTKEy(delay)

其中delay 的单位为ms毫秒,当 delay 取大于0的值时,程序在给定的 delay 时间内等待用户按键触发关闭图形显示窗口,或等到时间到关闭图形显示窗口。若设置delay为0,则代表等待按任意键关闭图形显示窗口。

没有它,窗口会在程序完成是立即关闭图形显示窗口。

提示,脱离IDLE环境时才能看到此函数的效果,如双击py脚本文件运。

下面给出读入图片并显示之源码

import cv2image1=cv2.imread(r"D:/cv2Demo/lotus2.png")cv2.imshow("image1",image1)cv2.waitKey(0)

运行之:

将图像保存

函数 cv2.imwrite() 用于将图像保存到指定的文件。

cv2.imwrite(filename, img [, paras])

参数说明:

filename:要保存的文件的路径和名称,包括文件扩展名

img:要保存的 OpenCV 图像,nparray 多维数组

paras:不同编码格式的参数,可选项

将彩色图片转成灰度图片保存

源码如下:

import cv2image1=cv2.imread(r"D:/cv2Demo/lotus2.png",0)cv2.imwrite(r"D:/cv2Demo/lotus2As.png",image1)

图像缩放

图像缩放函数cv2.resize(image, image2,dsize)

输入原始图像,输出新图像,图像的大小)

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])

参数说明:

scr:变换操作的输入图像

dsize: 输出图像的大小,二元元组 (width, height)

dst:变换操作的输出图像,可选项

fx, fy:x 轴、y 轴上的缩放比例,实型,可选项

interpolation:插值方法,整型,可选项

cv2.INTER_LINEAR:双线性插值(默认方法)

cv2.INTER_AREA:使用像素区域关系重采样,缩小图像时可以避免波纹出现

cv2.INTER_NEAREST:最近邻插值

cv2.INTER_CUBIC:4x4 像素邻域的双三次插值

cv2.INTER_LANCZOS4:8x8 像素邻域的Lanczos插值

图像缩为原来1/4

源码如下:

import cv2image1=cv2.imread(r"D:/cv2Demo/lotus2.png")print(image1.shape) #height, width = image1.shape[:2]  # 获取图片的高度和宽度image2=cv2.resize(image1,(int(0.5*width), int(0.5*height)))print(image2.shape) #cv2.imwrite(r"D:/cv2Demo/lotus2Quarter.png",image2)#保存

图像翻转

图像翻转函数cv2.flip(src, flipCode[, dst])

参数说明:

scr:变换操作的输入图像

flipCode:控制参数,整型(int),flipCode>0 水平翻转,flipCode=0 垂直翻转,flipCode<0 水平和垂直翻转

dst:变换操作的输出图像,可选项

图像翻转源码:

import cv2image1=cv2.imread(r"D:/cv2Demo/lotus2.png")imgFlip1 = cv2.flip(image1, 1)  # 0垂直翻转 ;1水平翻转 ;-1水平和垂直翻转cv2.imshow("image2",imgFlip1)cv2.waitKey(0)

图像旋转

实现图像的直角倍数旋转函数cv2.rotate(src, rotateCode[, dst])

cv2.rotate()以90度的倍数旋转2D阵列(array),速度很快。

参数说明:

src:变换操作的输入图像

rotateCode:枚举,指定旋转角度。

  cv2.ROTATE_90_CLOCKWISE:顺时针旋转 90 度

  cv2.ROTATE_180: 旋转 180 度

  cv2.ROTATE_90_COUNTERCLOCKWISE:逆时针旋转 90 度

dst:它是与src图像大小和深度相同的输出图像。它是一个可选参数。

图像顺时针旋转90度源码:

import cv2image1=cv2.imread(r"D:/cv2Demo/lotus2.png")image2 = cv2.rotate(image1,cv2.ROTATE_90_CLOCKWISE) #顺时针旋转90度cv2.imshow("image2",image2)cv2.waitKey(0)

下面介绍图像旋转任意角度,先介绍用到两个函数

获取旋转变换矩阵函数cv2.getRotationMatrix2D(center, angle, scale)

参数说明:

center:旋转中心坐标,二元元组 (x0, y0)

angle:旋转角度,单位为角度,逆时针为正数,顺时针为负数

scale: 缩放因子

利用变换矩阵对图像进行变换函数cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])

其中:

src - 输入图像。

M - 变换矩阵。

dsize - 输出图像的大小。

flags - 插值方法的组合(int 类型!)

borderMode - 边界像素模式(int 类型!)

borderValue - (重点!)边界填充值; 默认情况下,它为0。

下面介绍图像旋转任意角度的三种实现方法

法一、图像旋转任意角度源码(有剪裁)

源码如下:

#图像旋转任意角度源码(有剪裁)import cv2#第一个参数穿opencv读取的图像,第二个参数传入需要旋转的角度def rotate_bound(image, angle):    height, width = image.shape[:2]     # 取前两个值(H,W)     # 第一个参数旋转中心,第二个参数旋转角度,第三个参数缩放比例     center = ( width//2,height//2)  # 以图像中心为旋转中心     scale = 1                 # 等比例旋转,即旋转后尺度不变     # 获得旋转矩阵     M = cv2.getRotationMatrix2D(center, -angle, scale)     # 进行仿射变换,其中    #“,borderValue=(255,255,255)”定义边界填充色彩白色,省略默认黑色,相当于borderValue=(0,0,0)    return cv2.warpAffine(image, M, (width, height),borderValue=(255,255,255))image1 = cv2.imread(r"D:/cv2Demo/lotus2.png")image2 = rotate_bound(image1, 45)cv2.imshow('image', image2)  #显示图片cv2.waitKey(0)

法二、图像旋转任意角度源码(无剪裁)

源码如下:

#图像旋转任意角度源码(无剪裁)import numpy as npimport cv2#第一个参数穿opencv读取的图像,第二个参数传入需要旋转的角度def rotate_bound(image, angle):    # 获取图像的尺寸,并确定中心    (h, w) = image.shape[:2]    (cX, cY) = (w // 2, h // 2)    # 获取旋转矩阵(应用角度的负数以顺时针旋转)    # 获取正弦和余弦(即矩阵的旋转分量)    M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0)    cos = np.abs(M[0, 0])    sin = np.abs(M[0, 1])    #计算图像的新边界尺寸    nW = int((h * sin) + (w * cos))    nH = int((h * cos) + (w * sin))    # 调整矩阵    M[0, 2] += (nW / 2) - cX    M[1, 2] += (nH / 2) - cY    #进行仿射变换,其中    #“,borderValue=(255,255,255)”定义边界填充色彩白色,省略默认黑色,相当于borderValue=(0,0,0)    return cv2.warpAffine(image, M, (nW, nH),borderValue=(255,255,255))image1=cv2.imread(r"D:/cv2Demo/lotus2.png")image2 = rotate_bound(image1, 45)cv2.imshow('image', image2)  #显示图片cv2.waitKey(0)#cv2.imwrite(r"D:/cv2Demo/lotus2AsSave.png", image2) #保存

法三、图像旋转任意角度源码(无剪裁之二)

源码如下(请和法二对比):

#图像旋转任意角度源码(无剪裁之二)import cv2import numpy as np  def opencv_rotate(img, angle):    h, w = img.shape[:2]  # 图像的(行数,列数,色彩通道数)      center = (w / 2, h / 2)    scale = 1.0    # 1 获取M矩阵    # cv2.getRotationMatrix2D(获得仿射变化矩阵)    M = cv2.getRotationMatrix2D(center, -angle, scale)    # 2 扩大画布,新的宽高,radians(angle) 把角度转为弧度 sin(弧度)    new_H = int(w * np.fabs(np.sin(np.radians(angle))) + h * np.fabs(np.cos(np.radians(angle))))    new_W = int(h * np.fabs(np.sin(np.radians(angle))) + w * np.fabs(np.cos(np.radians(angle))))    # 3 平移    M[0, 2] += (new_W - w) / 2    M[1, 2] += (new_H - h) / 2     # cv2.warpAffine(进行仿射变化)    rotate = cv2.warpAffine(img, M, (new_W, new_H), borderValue= (0, 0, 0))    return rotate image1=cv2.imread(r"D:/cv2Demo/lotus2.png")image2 = opencv_rotate(image1, 45)cv2.imshow('image', image2)  #显示图片cv2.waitKey(0)#cv2.imwrite(r"D:/cv2Demo/lotus2AsSave.png", image2) #保存

 OK!

来源地址:https://blog.csdn.net/cnds123/article/details/126547307

--结束END--

本文标题: Python第三方cv2库介绍

本文链接: https://www.lsjlt.com/news/389684.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python第三方cv2库介绍
    Python第三方cv2库介绍 CV2指的是OpenCV2(Open Source Computer Vision Library),是一个开源的库平台计算机视觉库。有很强大的图片处理功能,可实现图像处理和计算机视觉方面的很多通用算法。 O...
    99+
    2023-09-01
    python opencv 开发语言
  • 简单介绍Python的第三方库yaml
    目录一、yaml基本介绍二、适用场景三、基本的语法规则四、YAML支持的三种数据结构4.1 对象4.2 数组4.2.1 对象和数组4.3 纯量4.4 还有一些特殊符号4.4.1 — ...
    99+
    2024-04-02
  • Python 第三方库
    1 Python 第三方库Python语言与Perl,C和Java等语言有许多相似之处。但是,也存在一些差异。在本章中我们将来学习Python的基础语法,让你快速学会Python编程。Python 常用的标准库以及第三方库有哪些? req...
    99+
    2023-01-31
    第三方 Python
  • python第三方异步日志库loguru简介
    目录一、引言二、安装loguru三、特性3.1 开箱即用3.2 无需初始化,导入函数即可使用3.3 更容易的文件日志记录与转存/保留/压缩方式3.4 更优雅的字符串格式化输出3.5 ...
    99+
    2022-12-24
    python异步日志库loguru 第三方异步日志库loguru python日志库loguru python loguru
  • Python第三方常用模块openpyxl的简单介绍
    目录openpyxl创建文件Workbook() —创建 excel 文件Workbook.create_sheet() —创建 excel 工作簿Works...
    99+
    2024-04-02
  • C++第三方日志库Glog的安装与使用介绍
    目录一、glog介绍二、glog下载三、环境介绍三、glog的编译详解3.1 利用CMake进行编译,生成VS解决方案3.2 利用VS对项目进行编译四、glog的基本使用4.1 创建...
    99+
    2024-04-02
  • Python第三方库paramiko S
    基于用户名和密码的sshclient方式登录:#!/usr/bin/env python #-*- coding=utf-8 -*- #说明:基于用户名和密码的sshclient方式登录 import paramiko try:     s...
    99+
    2023-01-31
    第三方 Python paramiko
  • python yagmail第三方库发送
    1.安装第三方库yagmail:   pip install yagmail 2.上代码 1 import yagmail 2 import os 3 4 5 def send_email(): 6 7 #链...
    99+
    2023-01-30
    第三方 python yagmail
  • python第三方库推荐 - dateu
    在dateutil中,吸引我的东西有2个,1个是parser,1个是rrule。其中parser是根据字符串解析成datetime,而rrule是则...
    99+
    2023-01-31
    第三方 python dateu
  • python第三方库有哪些
    本篇文章给大家分享的是有关python第三方库有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python有哪些常用库python常用的库:1.requesuts;2.sc...
    99+
    2023-06-14
  • Python离线安装第三方库
    在使用Python需要安装第三方库时,使用“pip install”命令是最方便的,但这样需要联网环境。如果需要给不能联网的机器安装第三方库,则需要从指定网站下载离线安装包并完成安装。 1.下载离线安装包 访问网址“PyPI · The P...
    99+
    2023-09-15
    python 开发语言 linux
  • Python第三方库undetected_chromedriver的使用
    undetected_chromedriver是专门针对浏览器识别做出来的拓展 直接使用undetected_chromedriver第三方库 if __name__ == '__m...
    99+
    2023-01-12
    undetected_chromedriver使用 undetected_chromedriver
  • python在哪安装第三方库
    python 的第三方库安装在用户目录 (~/.local/lib/python3.x/site-packages) 和系统目录 (/usr/local/lib/python3.x/si...
    99+
    2024-04-02
  • python如何调用第三方库
    Python调用第三方库通常需要以下几个步骤:1. 安装第三方库:使用pip工具安装第三方库,比如`pip install requ...
    99+
    2023-10-11
    python
  • 离线安装Python第三方库
    离线安装Python第三方库 本文章适用于 linux 离线安装 python 库,windows下载whl文件并发送至linux服务器进行安装 文章记录缘由:内网服务器无法联网下载pytho...
    99+
    2023-09-18
    python linux 服务器
  • python第三方库下载网址
    python第三方库下载网址: https://pypi.python.org/simple/ ...
    99+
    2023-01-31
    第三方 网址 python
  • python如何下载第三方库
    要使用 pip 安装 python 第三方库,请执行以下步骤:如果未安装 pip,请使用 "python3 -m ensurepip --upgrade" 命令安装。使用 "pip in...
    99+
    2024-04-02
  • python如何导入第三方库
    要导入第三方库,首先需要确保已经安装了该库。可以使用pip命令来安装第三方库,例如:```pip install 库名```安装完成...
    99+
    2023-10-10
    python
  • python 第一章 介绍-1.pyth
    一.Python特点         开源免费         脚本语言,解析执行         跨平台        高级语言,面向对象,可扩展,可移植性用于在不同的平台(因为Python是用C写的,又由于C的可移植性)内存管理器在Py...
    99+
    2023-01-31
    python pyth
  • python第三方库系列之一--json
    认真生活每一天,认真敲好每一行代码,为了未来的小公主,好好学习,天天向上~ 一、先讲讲json的出现,就要先讲讲序列化     1. 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格...
    99+
    2023-01-31
    第三方 系列 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作