基本属性
cv2.imread(文件名,属性) 读入图像
属性:指定图像用哪种方式读取文件
cv2.IMREAD_COLOR:读入彩色图像,默认参数,Opencv 读取彩色图像为BGR模式 !!!注意
cv2.IMREAD_GRAYSCALE:读入灰度图像。
cv2.imshow(窗口名,图像文件) 显示图像
可以创建多个窗口
cv2.waitKey() 键盘绑定函数
函数等待特定的几毫秒,看是否由键盘输入。
cv2.namedWindow(窗口名,属性) 创建一个窗口
属性:指定窗口大小模式
cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
cv2.WINDOW_NORMAL:窗口大小可调整
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()
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]
以上这篇Python-OpenCV基本操作方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]