Python-OpenCV基本操作

CV学习:OpenCv快速入门(python版) ​ 本文代码全部可运行,笔者运行环境:python3.7+pycharm+opencv4.6。此文是学习记录,记录opencv的入门知识,对各知识点并不做深入探究。文章的目的是让阅读者在极短的时间达到入门水平。 OpenCV是一个(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 阅读详情

基本属性

  1. cv2.imread(文件名,属性) 读入图像
    属性:指定图像用哪种方式读取文件
    • cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式 !!!注意
    • cv2.IMREAD_GRAYSCALE:读入灰度图像。
  2. cv2.imshow(窗口名,图像文件) 显示图像
    可以创建多个窗口
  3. cv2.waitKey() 键盘绑定函数
    函数等待特定的几毫秒,看是否由键盘输入。
  4. cv2.namedWindow(窗口名,属性) 创建一个窗口
    属性:指定窗口大小模式
    • cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
    • cv2.WINDOW_NORMAL:窗口大小可调整
  5. cv2.destoryAllWindows(窗口名) 删除任何建立的窗口

代码实例:

    import cv2
    img=cv2.imread('test.py',cv2.IMREAD_COLOR)
    cv2.namedWindow('image',cv2.WINDOW_NORMAL)
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destoryAllWindows()
  1. cv2.imwrite(保存图像名,需保存图像) 保存图像

代码实例:

    import cv2
    img=cv2.imread('test.png',0)
    cv2.imshow('image',img)
    k=cv2.waitKey(0)
    if k==27:    #等待 ESC 键
        cv2.destoryAllWindows()
    elif k==ord('s') #等待 's' 键来保存和退出
        cv2.imwrite('messigray.png',img)
        cv2.destoryAllWindows()

对于图像的一些操作

0x01. 获取图片属性

import cv2
img=img.imread('test.png')
print img.shape
#(768,1024,3)
print img.size
#2359296  768*1024*3
print img.dtype
#uint8

0x02. 输出文本

在处理图片时,将一些信息直接以文字的形式输出在图片上
cv2.putText(图片名,文字,坐标,文字颜色)

0x03. 缩放图片

实现缩放图片并保存,在使用OpenCV时常用的操作。cv2.resize()支持多种插值算法,默认使用cv2.INTER_LINEAR,缩小最适合使用:cv2.INTER_AREA,放大最适合使用:cv2.INTER_CUBIC或cv2.INTER_LINEAR。
res=cv2.resize(image,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
或者:
res=cv2.resize(image,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
此处None本应该是输出图像的尺寸,因为后边设置了缩放因子

0x04. 图像平移

cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
平移就是将图像换个位置,如果要沿(x,y)方向移动,移动距离为(tx,ty),则需要构建偏移矩阵M。
这里写图片描述

例如 平移图片(100,50)

    import cv2
    img=cv2.imread('test.png',1)
    rows,cols,channel=img.shape
    M=np.float32([[1,0,100],[0,1,50]])
    dst=cv2.warpAffine(img,M,(cols,rows))
    cv2.imshow('img',dst)
    cv2.waitKey(0)
    cv2.destoryALLWindows()

其中 (cols,rows)代表输出图像的大小,M为变换矩阵,100代表x的偏移量,50代表y的偏移量,单位为像素。

0x05. 图像旋转

OpenCV中首先需要构造一个旋转矩阵,通过cv2.getRotationMatrix2D获得。

import cv2
img=cv2.imread('test.png',0)
rows,cols=img.shape
#第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
M=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
#第三个参数为图像的尺寸中心
dst=cv2.warpAffine(img,M,(2*cols,2*rows))
cv2.imshow('img',dst)
cv2.waitKey(0)
cv2.destoryALLWindows()

0x06. 仿射变换

在仿射变换中,原图中所有的平行线在结果图像中同样平行。为了创建偏移矩阵,需要在原图像中找到三个点以及它们在输出图像中的位置。然后OpenCV中提供了cv2.getAffineTransform创建2*3的矩阵,最后将矩阵传给函数cv2.warpAffine。

import cv2
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread('test.png')
rows,cols,ch=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,250]])
M=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,M,(cols,rows))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()

这里写图片描述

0x07. 透视变换

视角变换,需要一个3*3变换矩阵。在变换前后要保证直线还是直线。构建此矩阵需要在输入图像中找寻4个点,以及在输出图像中对应的位置。这四个点中的任意三个点不能共线。变换矩阵OpenCV提供cv2.getPerspectiveTransform()构建。然后将矩阵传入函数cv2.warpPerspective。

import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('test.png')
rows,cols,ch=img.shape
pts1=np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2=np.float32([[0,0],[300,0],[0,300],[300,300]])
M=cv2.getPerspectiveTransform(pts1,pts2)
dst=cv2.warpPerspective(img,M,(300,300))
plt.subplot(121),plt.imshow(img),plt.title('Input')
plt.subplot(122),plt.imshow(dst),plt.title('Output')
plt.show()

这里写图片描述

0x09. 图像 regions of Interest

有时需要对一副图像的特定区域进行操作,ROI使用Numpy索引来获得的。

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('test.png')
rows,cols,ch=image.shape
tall=image[0:100,300:700]
image[0:100,600:1000]=tallall
cv2.imshow("image",image)
cv2.waitKey(0)
cv2.destoryALLWindows()

这里写图片描述

0x10. 通道的拆分/合并处理

有时需要对BGR三个通道分别进行操作。这时需要将BGR拆分成单个通道。同时有时需要把独立通道的图片合并成一个BGR图像。
使用OpenCV库函数版本

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('pitt1.jpg')
rows,cols,ch=image.shape
#拆分通道,cv2.split()是一个比较耗时的操作。只有需要时使用,尽量Numpy
b,g,r=cv2.split(image)
print b.shape
#(768,1024)
#合并通道
image=cv2.merge(b,g,r)

使用Numpy索引版本:

import cv2
import numpy as np
import matplotlib.pyplot as plt

image=cv2.imread('pitt1.jpg')
rows,cols,ch=image.shape
#直接获取
b=img[:,:,0]
OpenCV-Python——环境配置及图像基本操作 由于文章篇幅有限,文档资料内容较多,需要这些文档的朋友,可以加小助手微信免费获取,【保证100%免费】,中国人不骗中国人。建议安装3.4.1的版本,3.4.2之后的版本做了专利保护,有的功能不能实现。虚拟环境的安装以及安装库的问题见PyQt5专栏中的第一节。pip install jupyter——安装。2、安装jupyter notebook。jupyter notebook——启动。本文仅供练习,切勿商用。 阅读详情

相关推荐

Python Opencv基本操作

读取文件 import numpy as np import cv2 # 读取文件 写入文件 img = cv2.imread('boldt.jpg',0) cv2.imshow('image',img) k = cv2.waitKey(0) if k == 27: cv2.destroyAllWindows() elif k == ord('s'): cv2.imwrit...

weixin_42717395的博客 275

Python OpenCV图像处理:从基础到高级的全方位指南

OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理算法和功能。它支持多种编程语言,包括Python、C++、C#等。OpenCV的主要功能包括图像处理、图像识别、图像合成等。OpenCV的核心概念包括图像处理、图像分析、机器学习等。它提供了一系列的图像处理函数,如图像变换、图像增强、图像复原等。此外,OpenCV还支持图像识别和图像合成,可以用于构建复杂的计算机视觉系统。本文从Python OpenCV图像处理的基础知识出发,详细介绍了图像处理的概念、常用库、实战案例及注意事项。

极客代码 1万+

AMD显卡跑Ollama大模型?手把手教你搞定Windows下GPU识别与加速(以RX 9600XT为例)

本文详细指导如何在Windows系统下使用AMD显卡(如RX 9600XT)运行Ollama大模型,解决GPU识别与加速问题。通过获取非官方Ollama版本、替换ROCm库文件等步骤,实现高效的GPU加速推理,提升大语言模型的运行效率。

weixin_28707365的博客 474

OpenCV-Python (官方)中文教程(部分一)

官网链接(英文版):https://docs.opencv.org/4.1.1/d6/d00/tutorial_py_root.html 第一章.OpenCV简介 了解如何在计算机上设置OpenCV-Python! 1.OpenCV-Python教程简介 1.1 OpenCV OpenCV是由Gary Bradsky于1999年在Intel公司创建的,第一次发布是在2000年。瓦...

Thomson617的博客 5万+

不用敲命令!用宝塔面板可视化部署pbootCMS的保姆级教程(2024最新版)

本文提供2024年最新版pbootCMS可视化部署教程,全程使用宝塔面板操作,无需任何命令行知识。从服务器初始化、LNMP环境配置到源码上传、安装向导,手把手指导用户通过图形化界面快速搭建专业网站,适合零基础新手和追求高效建站的用户。

weixin_42509507的博客 488

WPF窗口定位技巧:从基础到高级的三种实现方法

本文详细解析WPF窗口定位的三种核心方法:屏幕居中(CenterScreen)、父窗口居中(CenterOwner)和手动定位(Manual)。通过对比其适用场景、实现代码与注意事项,帮助开发者根据实际需求选择最佳方案,从而提升WPF应用程序的用户体验与专业度。

weixin_29224309的博客 268

opencv-python入门学习(1)

opencv-python的入门学习(1)

m0_63843473的博客 1564

手把手教你用Trae配置Python开发环境(含Claude 3.5代码生成实战)

本文详细介绍了如何使用字节跳动推出的Trae智能开发环境配置Python开发环境,并实战演示了Claude 3.5代码生成功能。从环境准备到项目初始化,再到AI辅助编码和调试优化,全面展示了Trae在提升开发效率方面的强大能力,特别适合Python开发者快速搭建项目和解决复杂问题。

weixin_28309571的博客 972

Opencv教程(Python)

1、显示图片、视频、电脑摄像头 显示图片 import cv2 #LOAD AN IMAGE USING 'IMREAD' img = cv2.imread("Resources/lena.png") # # DISPLAY cv2.imshow("Lena Soderberg",img) #图像显示时间 cv2.waitKey(0) 显示视频 import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture("Resourc.

HUASHUDEYANJING的博客 2万+

Embarcadero Dev-C++ 6.3安装教程【保姆级】

Embarcadero Dev-C++ 6.3安装教程,保姆级教程~

Thebest_jack的博客 1万+

RKNN 端侧部署必看:YOLOv11 Pose 姿态估计模型转换与性能优化实战

随着人工智能技术在边缘计算领域的快速发展,姿态估计作为计算机视觉的重要分支,在智能监控、人机交互、体感游戏等场景中展现出巨大的应用潜力。本文深入研究了YOLOv11 Pose模型在Rockchip RKNN平台上的部署方案,从理论基础、模型转换、平台优化到实际部署进行了全面阐述。通过详细的技术分析和实验验证,证明了RKNN平台能够有效提升YOLOv11 Pose的推理性能,在RK3588硬件平台上实现了高达100 FPS的实时姿态检测,为边缘计算场景下的姿态估计应用提供了高效的解决方案。

m0_71589036的博客 178

opencv python 基本操作

本文介绍了Python OpenCV库的基本图像处理操作,包括:1) 读取和显示图像;2) 灰度/彩色模式切换;3) 视频读取与处理;4) 图像裁剪与通道分离;5) 边界填充方法对比;6) 数值计算与图像融合。关键操作如cv2.imread()读取图像、cv2.imshow()显示图像、cv2.split()分离通道、cv2.copyMakeBorder()边界填充以及cv2.addWeighted()图像融合等均通过代码示例说明。文中还展示了不同边界填充方式的视觉效果对比,并详细解释了BORDER_REP

huangyifei_1111的博客 549

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3498

OpenCV-python 学习笔记 Opencv图像基本操作1

OpenCV-python 学习笔记 Opencv图像基本操作1 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件为您提供了关于OpenCV-python的图像基本操作学习笔记,内容涵盖OpenCV-python环境的搭建以及图像的读取、显示和保存。 内容概述 1. OpenCV-python 环境搭建 详细介绍如何搭建OpenCV-python开发环境,让您能...

gitblog_06709的博客 389

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

《数字图像处理-OpenCV/Python》第1章:图像的基本操作

为了方便初学者从零开始学习OpenCV-Python,本书从图像的读取、保存和显示等基本操作开始介绍,使读者可以循序渐进地使用和理解本书的每一个例程。本节介绍: ◎ 图像、视频文件和多帧图像(动图)的读取与保存。 ◎ 从网络地址读取图像和含中文路径图像的读取方法。

youcans的博客 3451

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

树莓派——Opencv_python基本操作

Opencv基本操作

Black__goat的博客 1866

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python opencv创建图像_【python-opencv】图像的基本操作

1、访问和修改像素值加载彩色图像:importnumpy as npimportcv2 as cvimage=cv.imread("dog2.jpg",1)谷歌colab上显示图像:from google.colab.patches importcv2_imshowcv2_imshow(image)你可以通过行和列坐标来访问像素值。对于 BGR 图像,它返回一个由蓝色、绿色和红色值组成的数组。对于...

weixin_40002336的博客 1422

python调用opencv_Python-OpenCV基本操作方法详解

基本属性cv2.imread(文件名,属性) 读入图像属性:指定图像用哪种方式读取文件cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式 !!!注意cv2.IMREAD_GRAYSCALE:读入灰度图像。cv2.imshow(窗口名,图像文件) 显示图像可以创建多个窗口cv2.waitKey() 键盘绑定函数函数等待特定的几毫秒,看是否由键盘输入。cv...

weixin_39827036的博客 415

opencv python 2 基本操作

opencv_python_2_基本操作读取并修改像素值import cv2img = cv2.imread('a.jpg') px = img[10, 10] print(px)输出结果为 [130 155 22] 为该像素点的BRG像素值。 opencv读取彩色图像的像素顺序为BGR而非RGB。 也可输出单个通道的值:px = img[10, 10, 0] print(px)输出结果为1

super_chicken的博客 468

python OpenCV基本操作cv2

参考:https://www.cnblogs.com/zlel/p/9267629.html 1.图片加载 cv2.imread(filename, flags=None) 2、显示图片 cv2.imshow(winname, mat) winname 图口名称 mat ,已加载图片的变量名 3、图像显示窗口创建与销毁, cv2.namedWindow(窗口名,属性) 创建一个窗口 属性—指定窗口大小模式: cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小 cv2.WINDOW_NORMAL

小白的一次小程序编程的各种记录 1717

python+opencv教程7_opencv-python教程学习系列7-opencv图像基本操作

前言opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的基本操作,坚持学习,共同进步。系统环境系统:win7_x64;python版本:python3.5.2;opencv版本:opencv3.3.1;内容安排1.知识点介绍;2.测试代码;具体内容1.知识点介绍;使用的库包含cv2、numpy和matplotlib,包含修改图像像素、获取图像属性、...

weixin_39705435的博客 99

【Python-opencv3.4】视频基本操作(帧率,总视频帧数、从第N帧开始播放、播放进度显示、按键控制视频)

一、视频基本操作: 1.读取视频帧率、分辨率、读取视频总帧数、起始播放帧数 2.使用键盘控制视频 3.显示视频播放进度 二、基本操作对应代码 【完整代码】提取码:0vvb 1.读取视频帧率、分辨率、读取视频总帧数 #—————————————————————————————— #————————添加自己的视频播放路径——————————— video_path="F:/Ze...

进一寸有一寸的欢喜 1万+

Python - OpenCV - 图像处理的基本操作

文章目录图像处理的基本操作读取图像显示图像显示一张图像显示两张张图像销毁指定窗口和所有窗口保存图像参考 图像处理的基本操作 读取图像 使用函数 imread(filename[, flags]) 从指定的文件加载一张图像: import cv2 image = cv2.imread("D:/E/Pictures/Winter Soldier.png") print(image) 运行上述程序后,控制台会输出图像的部分像素值: [[[197 196 192] [197 196 192] [198

qq_29761395的博客 3448

基于python的opencv图像处理基本操作

在国内使用Python时,由于网络延迟和不可控因素,访问官方的PyPI(Python Package Index)服务器下载模块和依赖包可能会遇到速度较慢甚至无法连接的问题。在Python中下载OpenCV包,最常用的方法是使用pip命令。pip是Python的包安装工具,可以方便地从Python包索引(PyPI)安装和管理包。该方法的两个参数分别是:图像的存储地址和图像的信息。选择复制文件的地址,即可得到文件的整个路径。在不输入flag的值的时候默认读取为彩图。flag=0,读取的图片为灰度图片。

2302_80091643的博客 1276

python连接opencv库_Python-OpenCV基本操作方法详解_python

下面小编就为大家分享一篇Python-OpenCV基本操作方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧基本属性cv2.imread(文件名,属性) 读入图像属性:指定图像用哪种方式读取文件cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式 !!!注意cv2.IMREAD_GRAYSCALE:读入灰度图像。cv2.imshow...

weixin_39846186的博客 170
上一篇: 卷积神经网络介绍
下一篇: 《Where to Focus: Query Adaptive Matching for Instance Retrieval Using Convolutional Feature Maps》阅读笔
Ciroo
博客等级 码龄14年 20粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值