Python学习(1):cv2函数
转:模块cv2的⽤法
⼀、读⼊图像
使⽤函数cv2.imread(filepath,flags)读⼊⼀副图⽚
filepath:要读⼊图⽚的完整路径
flags:读⼊图⽚的标志
cv2.IMREAD_COLOR:默认参数,读⼊⼀副彩⾊图⽚,忽略alpha通道
cv2.IMREAD_GRAYSCALE:读⼊灰度图⽚
cv2.IMREAD_UNCHANGED:顾名思义,读⼊完整图⽚,包括alpha通道
eg.
import cv2
img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
⼆、显⽰图像
使⽤函数cv2.imshow(wname,image)显⽰图像,第⼀个参数是显⽰图像的窗⼝的名字,第⼆个参数是要显⽰的图像(imread读⼊的图像)。窗⼝⼤⼩⾃动调整为图⽚⼤⼩。
eg.
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()#dv2.destroyWindow(wname)
cv2.waitKey顾名思义等待键盘输⼊,单位为毫秒,即等待指定的毫秒数看是否有键盘输⼊,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运⾏。若没有按下任何键,超时后返回-1。参数为0表⽰⽆限等待。不调⽤waitKey的话,窗⼝会⼀闪⽽逝,看不到显⽰的图⽚。
cv2.destroyAllWindow()销毁所有窗⼝
cv2.destroyWindow(wname)销毁指定窗⼝
三、保存图像
使⽤函数cv2.imwrite(file,img,num)保存⼀个图像。第⼀个参数是要保存的⽂件名,第⼆个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表⽰的是图像的质量,⽤0 - 100的整数表⽰,默认95;对于png ,第三个参数表⽰的是压缩级别。默认为3.
注意:
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越⾼图像越⼩。
eg.
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
四、图⽚操作
1、使⽤函数cv2.flip(img,flipcode)翻转图像,flipcode控制翻转效果。
flipcode = 0:沿x轴翻转
flipcode > 0:沿y轴翻转
flipcode < 0:x,y轴同时翻转
imgflip = cv2.flip(img,1)
2、复制图像
imgcopy = py()
3、颜⾊空间转换
#彩⾊图像转为灰度图像
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
#灰度图像转为彩⾊图像
img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
# cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS ⽰例——————————————————
读⼊⼀副图像,按’s’键保存后退出,其它任意键则直接退出不保存
import cv2
img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == ord('s'): # wait for 's' key to save and exit
cv2.imwrite('1.png',img)
cv2.destroyAllWindows()
else:
cv2.destroyAllWindows()
⽰例————————————————————
读⼊⼀副图像,给图⽚加⽂本
import cv2
# img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)
img=cv2.imread('1.png',cv2.IMREAD_COLOR)    # 打开⽂件
font = cv2.FONT_HERSHEY_DUPLEX  # 设置字体
rectangle函数opencv# 图⽚对象、⽂本、像素、字体、字体⼤⼩、颜⾊、字体粗细
imgzi = cv2.putText(img, "zhengwen", (1100, 1164), font, 5.5, (0, 0, 0), 2,)
# cv2.imshow('lena',img)
cv2.imwrite('5.png',img)    # 写磁盘
cv2.destroyAllWindows()    # 毁掉所有窗⼝
cv2.destroyWindow(wname)    # 销毁指定窗⼝
配合画图——————————————————
import numpy as np
import cv2
np.set_printoptions(threshold='nan')
# 创建⼀个宽512⾼512的⿊⾊画布,RGB(0,0,0)即⿊⾊
s((512,512,3),np.uint8)
# 画直线,图⽚对象,起始坐标(x轴,y轴),结束坐标,颜⾊,宽度
cv2.line(img,(0,0),(311,511),(255,0,0),10)
# 画矩形,图⽚对象,左上⾓坐标,右下⾓坐标,颜⾊,宽度
# 画圆形,图⽚对象,中⼼点坐标,半径⼤⼩,颜⾊,宽度
cv2.circle(img,(222,222),50,(255.111,111),-1)
# 画椭圆形,图⽚对象,中⼼点坐标,长短轴,顺时针旋转度数,开始⾓度(右长轴表0度,上短轴表270度),颜⾊,宽度cv2.ellipse(img,(333,333),(50,20),0,0,150,(255,222,222),-1)
# 画多边形,指定各个点坐标,array必须是int32类型
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
# -1表⽰该纬度靠后⾯的纬度⾃动计算出来,实际上是4
pts = shape((-1,1,2,))
# print(pts)
# 画多条线,False表不闭合,True表⽰闭合,闭合即多边形
cv2.polylines(img,[pts],True,(255,255,0),5)
#写字,字体选择
font=cv2.FONT_HERSHEY_SCRIPT_COMPLEX
# 图⽚对象,要写的内容,左边距,字的底部到画布上端的距离,字体,⼤⼩,颜⾊,粗细cv2.putText(img,"OpenCV",(10,400),font,3.5,(255,255,255),2)
a=cv2.imwrite("picture.jpg",img)
cv2.imshow("picture",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
————————打住线
天。。太齐全了。。还是⽤到啥看啥把。。。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。