opencv中的图像处理

这篇文章是我看《opencv-python-Tutorial-中文版》的笔记

#导入
import cv2
import numpy as np
cv2.namedWindow('imghsv',cv2.WINDOW_NORMAL)
cv2.resizeWindow('imghsv',640,480)
cv2.namedWindow('imggray',cv2.WINDOW_NORMAL)
cv2.resizeWindow('imggray',640,480)
img=cv2.imread('D:\BaiduNetdiskDownload\practice2.jpg',1)

颜色空间转换

转换颜色空间 cv2.cvtColor(input_img,flag)

#转换颜色空间:cv2.cvtColor(input_img,flag)
imggray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imghsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#HSV H(色彩/色度)[0,179] S(饱和度)[0,255] V(亮度)[0,255]
cv2.imshow('imggray',imggray)
cv2.imshow('imghsv',imghsv)

物体跟踪

#物体跟踪
#从视频中获取每一帧图像
#将图像转换到HSV空间
#设置HSV阈值到蓝色范围
#获取蓝色物体
k=0
cap=cv2.VideoCapture(0)
while(1):
    ret,frame=cap.read()
    hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
    #设定蓝色阈值
    lower_blue=np.array([0 ,52, 50])
    upper_blue=np.array([200,255,255])
    #根据阈值构建掩模
    mask=cv2.inRange(hsv,lower_blue,upper_blue)#高过一定值变成0,去除阈值以外的部分
    #对图像和掩模进行位运算
    res=cv2.bitwise_and(frame,frame,mask=mask)
    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k==cv2.waitKey(1)
    if k==27:
        break
cv2.destroyAllWindows()

#找到跟踪对象的HSV值
#cv2.cvtColor(BGR值,cv2.COLOR_BGR2HSV)
green=np.uint8([[[0,255,0]]])#一定要三个[],对应cvArray,cvMat,IplImage
hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV)
print(hsv_green)#阈值上下浮动100(?)

几何变换

扩展缩放

#扩展缩放
#缩放:cv2.INTER_AREA
#扩展:cv2.INTER_CUBIC CV2.INTER_LINEAR
#默认下所有改变图像尺寸大小的操作使用的插值方法都是cv2.INTER_LINEAR
height,width=img.shape[:2]
#下面的None本应该是输出图像的尺寸,但是后面我们设置了缩放因子,因此这里为None
res=cv2.resize(img,None,fx=2,fy=2,interpolation=cv2.INTER_CUBIC)
#OR 直接设置了输出图像的尺寸,所以不用设置缩放因子
height,width=img.shape[:2]
res=cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_CUBIC)
cv2.namedWindow('res',cv2.WINDOW_NORMAL)
cv2.resizeWindow('res',640,480)
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',640,480)
while(1):
    cv2.imshow('res',res)
    cv2.imshow('img',img)
    k==cv2.waitKey(1)
    if k==27:
        break    
cv2.destroyAllWindows()

平移

#src – 输入图像。
#M – 变换矩阵。
#dsize – 输出图像的大小。
#flags – 插值方法的组合(int 类型!)
#borderMode – 边界像素模式(int 类型!)
#borderValue – (重点!)边界填充值; 默认情况下,它为0。
img=cv2.imread(r"D:\opencv\opencv_exercises-master\images\CrystalLiu2.jpg", 1)
rows,cols,channels=img.shape
m = np.float32([[1, 0, 200], [0, 1, 100]])#不要打成np.float
img2=cv2.warpAffine(img,m,(cols,rows))
cv2.imshow('image',img2)
cv2.waitKey(0)

旋转

#旋转
#cv2.getRotationMatrix2D() 参数为:center,角度,缩放
img=cv2.imread(r"D:\opencv\opencv_exercises-master\images\CrystalLiu2.jpg", 1)
rows,cols,channels=img.shape
m=cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)
dst=cv2.warpAffine(img,m,(cols,rows))
cv2.imshow('dst',dst)
cv2.waitKey(0)

仿射变换

#cv2.getAffineTransform(pts1,pts2) 通过这个函数求出仿射变换的矩阵
img=cv2.imread(r"D:\opencv\opencv_exercises-master\images\dave.png", 1)
rows,cols,channels=img.shape
pts1=np.float32([[50,50],[200,50],[50,200]])
pts2=np.float32([[10,100],[200,50],[100,200]])
m=cv2.getAffineTransform(pts1,pts2)
dst=cv2.warpAffine(img,m,(2*cols,rows))
cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey(0)

透视变换

#透视变换
img=cv2.imread(r"D:\opencv\opencv_exercises-master\images\dave.png", 1)
rows,cols,channels=img.shape
pts1=np.float32([[50,50],[200,53],[20,20],[70,79]])
pts2=np.float32([[10,100],[200,50],[105,200],[111,122]])
m=cv2.getPerspectiveTransform(pts1,pts2)
dst=cv2.warpPerspective(img,m,(300,300))
cv2.imshow('dst',dst)
cv2.waitKey(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值