【学习记录】【python】【opencv】自学简要记录(未完)

自学记录 不专业

001 基础-读取与保存

读取图像
显示图像
保存图像
读取视频文件

读取图像

#读入图像 cv2.imread(filepath,flags)
'''
flags参数的取值:
cv2.IMREAD_COLOR:默认,载入一个彩色图像,忽略透明度   可用1代替
cv2.IMREAD_GRAYSCALE:载入一个灰阶图像  可用0代替
cv2.IMREAD_UNCHANGED:载入一个包含 Alpha 通道(透明度)的图像   可用-1代替
'''
img1=cv2.imread('imgs/lx.jpg',0)

显示图像

#显示图像   cv2.imshow(wname,img)
'''
wname  窗口的名字 window name
img 要显示的图像 窗口他大小为自动调整图片大小
'''
cv2.imshow('lxSHOW',img1)
key=cv2.waitKey(0)
cv2.destroyWindow('lxSHOW')
#cv2.destroyAllWindows()
if key==27:
    print('Key_ESC has been pressed')

保存图像

#保存图像 cv2.imwrite(file,img,num)
'''
file 文件名
img  要保存的图像
'''
#其中可选参数num
'''
它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
'''
cv2.imwrite('imgs_save/lxGrey1.jpg',img1,[int(cv2.IMWRITE_JPEG_QUALITY),95])
cv2.imwrite('imgs_save/lxGrey2.png',img1,[int(cv2.IMWRITE_PNG_COMPRESSION),3])
# jpg属于有损压缩,是以图片的清晰度为代价的,数字越小,压缩比越高,图片质量损失越严重
# png属于无损压缩,数字0-9,数字越低,压缩比越低

读取视频文件

#读取视频 cv2.VideoCapture()
'''
参数为0 : 调用笔记本内置摄像头
参数为其他数字 : 不是很清楚,尝试用OBS开了个虚拟摄像头参数调成1可以调用
参数为路径 : 打开视频
'''
#检查摄像头初始化是否成功 cv2.VideoCapture.isOpened()
'''
成功返回Ture
'''
#读取视频的一帧 cv2.VideoCapture.read()
'''
每次调用便读取一帧 返回值为 ret,frame
ret : 布尔类型,如果正确读取便返回Ture
frame : 每一帧的图像,三维矩阵
'''
#释放摄像头 cv2.VideoCapture.release()

#vd = cv2.VideoCapture('videos/mgm.mkv')
vd =  cv2.VideoCapture(1)
if vd.isOpened():
    ret, frame = vd.read()
    #frame = cv2.resize(frame,(1080,720))
else:
    ret = False
    
while ret:
    cv2.imshow('TheVideo',frame)
    #利用waitKey设置每一帧的停顿时间 如果你按了ESC(27)则直接退出 
    #显然当waitKey为0时只有按键才会换帧
    if cv2.waitKey(1) & 0xFF == 27:
        break
    ret, frame = vd.read()
    #frame = cv2.resize(frame,(1080,720))
    
vd.release()
cv2.destroyAllWindows() 

002基础-简单变换

裁剪
改变图片大小
改变图片大小-自己实现
图片反转
颜色通道分离与合并
cv2.cvtColor 通道转换
简单数值计算
cv2.addWeighted

裁剪

#图片裁剪
img_cliped = img[100:600,50:1050]

cv2.imshow('Clip', img_cliped)
cv2.waitKey(0)
cv2.destroyWindow('Clip')

改变图片大小

#图片改变大小 cv2.resize(img,(整形宽,整形高),fx,fy)
'''
可以给出固定的宽高
也可以给(0,0)按倍数变化(fx,fy)
'''
img_resized = cv2.resize(img, (1200,500)) #(宽1200,高500)
img_resized2 = cv2.resize(img, (0,0), fx = 0.4, fy = 0.4)

cv2.imshow('Resize', img_resized)
cv2.imshow('Resize2', img_resized2)
cv2.waitKey(0)
cv2.destroyAllWindows()

改变图片大小-自己实现

#图片改变大小 自己实现
import numpy as np
import cv2

img=cv2.imread('imgs/lx.jpg',1)
rate=0.4

imgH,imgW,imgN=img.shape
newH,newW,newN=int(imgH*rate),int(imgW*rate),imgN

new=np.zeros((newH,newW,newN),np.uint8)

for i in range(newH):
    for j in range(newW):
        ii=int(i*(imgH*1.0/newH))
        jj=int(j*(imgW*1.0/newW))
        new[i,j]=img[ii,jj]

cv2.imshow('lxRESIZED',new)
#cv2.imshow('lxRESIZED',np.dstack((new[:,:,0],new[:,:,1],new[:,:,2])))
cv2.waitKey(0)
cv2.destroyAllWindows()

图片反转

#图片反转 cv2.flip(img,flipcode)

'''
#flipcode=0 沿x轴翻转
#flipcode>0 沿y轴翻转
#flipcode<0 x,y同时翻转
'''
flipX=cv2.flip(img,0)
flipY=cv2.flip(img,1)
flipXY=cv2.flip(img,-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值