open-cv 1-5节

 

第一节:打开图片、视频、摄像头

 

 

1. 使用pycharm下载opencv-python

2. opencv库函数用python语言开启笔记本内置摄像头,方cv2.VideoCapture(0)如果有其他参数,方法的形参可以填1,2,3….
3. 在循环里面动态读取摄像头里面传输的内容,并显示

  sucess,img=cap.read()

 
4. 键盘操作
4.1
当键盘获取到”exc”键时,
关闭摄像头cv2.destroyAllWindows()并退出循环
4.2当键盘获取到”s”键时
      保存图像,关闭摄像头并退出循环cv2.imwrite("image2.jpg",img)
cv2.destroyAllWindows()

1. 下载opencv-python

2.其他步骤

3.实现效果

 

 

 


按键盘“s”截取图片:


 

第二节:图像的颜色

import cv2
import numpy as np

img = cv2.imread(“Resources/lena.png”)
kernel = np.ones((
5,5),np.uint8)#5*5,每个值都为1的矩阵,无符号整数((x,y,对象的类型)

imgGray =
cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#颜色(src ,bgr/rgb/hsv)
#cv2.cvtColor(img,cv_color_  )
imgBlur =
cv2.GaussianBlur(imgGray,(
3,3),0)#模糊 src,y的坐标范围),(x的坐标范围)
imgCanny = cv2.Canny(img,150,200)#连接线条,(src,不知道是什么,值越大线条越少)
imgDialation =
cv2.dilate(imgCanny,kernel,
iterations=1)#线条的厚度,(scr/前面的图像,矩阵的值,迭代多少次数值越大迭代月多次    
imgEroded =
cv2.erode(imgDialation,kernel,
iterations=1)#点的腐蚀

cv2.imshow(“Gray Image”,imgGray)
cv2.imshow(
“Blur
Image”
,imgBlur)
cv2.imshow(
“Canny
Image”
,imgCanny)
cv2.imshow(
“Dialation
Image”
,imgDialation)
cv2.imshow(
“Eroded
Image”
,imgEroded)
cv2.waitKey(
0)

 

 

 

第三节:图像的大小、裁剪头像

 

import cv2
import numpy as np

img = cv2.imread(“Resources/shapes.png”)
print(img.shape)#图片的大小打印出:(高度,宽度,NGR

imgResize =
cv2.resize(img,(
1000,500))#图像大小,(宽度,高度)

imgCropped = img[46:119,352:495]#裁剪图像【y的取值范围,x的取值范围】

cv2.imshow(“Image”,img)
cv2.imshow(
“Image
Resize”
,imgResize)
cv2.imshow(
“Image
Cropped”
,imgCropped)

cv2.waitKey(0)  

 

四节:图像的颜色、绘制线条、口、○、文字

 

import cv2
import numpy as np

img = np.zeros((512,512,3),np.uint8)#创建一个数值为0512*512,对象的类型是无符号整数
#print(img)
###########################################
矩阵图像的颜色#########################################
#img[:]= 255,0,0 #
矩阵图像的颜色 参数:【:】 可不写,默认【0,0
#
当然可以添加参数【高度取值,宽度取值】:【100,200:200300   
255,0,0
表示RGB 默认为黑色0,0,0
##########################################
在矩阵中画东西##########################################
cv2.line(img,(0,0),(img.shape[1],img.shape[0]),(0,255,0),3)#画直线
#
img.(起点),(终点),RGB 颜色)(线条的宽度)
#               
(img.shape[1],img.shape[0])
(矩阵的高度,矩阵宽度)
cv2.rectangle(img,(0,0),(250,350),(0,0,255),2)#画矩形,注:(线条的宽度)可设置为cv2.FILLED,表示填充整个矩形
cv2.circle(img,(400,50),30,(255,255,0),5)#画圆
cv2.putText(img,” OPENCV  “,(300,200),cv2.FONT_HERSHEY_COMPLEX,1,(0,150,0),3)

#文字(img,”文字,(起始x,y,文字字体,文字比例大小,文字颜色,文字厚度)


cv2.imshow(“Image”,img)
cv2.waitKey(
0)

 

第五节 图像平整化
 

 

import cv2
import numpy as np

img = cv2.imread(“Resources/cards.jpg”)

width,height = 250,350
pts1 = np.float32([[111,219],[287,188],[154,482],[352,440]])#获取轮廓的四个点
pts2 =
np.float32([[
0,0],[width,0],[0,height],[width,height]])#显示平面的四个点
matrix =
cv2.getPerspectiveTransform(pts1,pts2)
#获得新的透视转换图,生成从原来的4个点移动到新的4个点的矩阵
imgOutput =
cv2.warpPerspective(img,matrix,(width,height))
#使用矩阵将里面的点打造成新的图像

cv2.imshow(“Image”,img)
cv2.imshow(
“Output”,imgOutput)

cv2.waitKey(0)