第一节
1.环境搭建:python3.6+PyCharm+Opencv3.3
pycharm里自带了很方便的安装第三方库的方法,不需要自己去下载opencv包再pip install,在seetings中安装OpenCV
2.快捷键的使用
ctrl+/ 注释
“”“” 整段注释
Tab 整段缩进
Shift+Tab 整段取消缩进
3.OpenCV的各个模块
第二节图片加载和保存
import cv2 as cv
import numpy as np
def get_image_info(img):
print(img.size)
print(img.shape)
print(img.dtype)
print(type(img))
pixel_data = np.array(img)
print(pixel_data)
src = cv.imread("C:/Users/Administrator/Pictures/tt.png")
get_image_info(src)
cv.imshow("inputWindows",src)
cv.waitKey(0)
cv.destroyWindow("inputWindows")
第三节 颜色空间转换
1.什么是色彩空间?常见色彩空间?相互转换?
“色彩空间”一词源于西方的“Color Space”,又称作“色域”,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。
2.常见色彩空间:RGB HSV HIS YCrCb YCrCb
import cv2 as cv
import numpy as np
def cross_pixels(image):
print(image.shape)
height = image.shape[0]
width = image.shape[1]
channel = image.shape[2]
print("height:%s,width:%s,channel:%s"%(height,width,channel))
def color_space_demo(image):
gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY)
cv.imshow("gray",gray)
hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)
cv.imshow("hsv",hsv)
yuv = cv.cvtColor(image,cv.COLOR_RGB2YUV)
cv.imshow("yuv",yuv)
def extract_demo():
capture = cv.VideoCapture("C:/Users/Administrator/Pictures/1.mp4")
while(True):
ret,frame = capture.read()
if(ret == False):
break;
hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
lowerb = np.array([11,42,46])
upperb = np.array([25, 255, 255])
src = cv.inRange(hsv,lowerb,upperb)
cv.imshow("src",src)
c = cv.waitKey(40)
if(c==27):
break;
def split_merge_demo(image):
b,g,r = cv.split(image)
cv.imshow("b",b)
cv.imshow("g",g)
cv.imshow("r",r)
image[:,:,2]=0
cv.imshow("changeImage",image)
src1 = cv.merge([r,g,b])
cv.imshow("src1",src1)
src = cv.imread("C:/Users/Administrator/Pictures/tt.png")
cv.imshow("inputWindows", src)
# extract_demo()
# cross_pixels(src)
# color_space_demo(src)
split_merge_demo(src)
cv.waitKey(0)
cv.destroyAllWindows();
用于提取颜色的图片
第四节 像素运算
任务:加减乘除、对比度、亮度、逻辑运算:与或非
#!/usr/bin/env python
# encoding: utf-8
# @Time : 2020/8/7 16:23
# @Author : yq
# @Site :
# @File : tutorial_3.py.py
# @Software: PyCharm
import cv2 as cv
import numpy as np
def add_demo(m1,m2):
image = cv.add(m1,m2)
cv.imshow(image)
def sub_demo(m1,m2):
image = cv.subtract(m1,m2)
cv.imshow(image)
def mul_demo(m1,m2):
image = cv.multiply(m1,m2)
cv.imshow(image)
def divide_demo(m1,m2):
image = cv.divide(m1,m2)
cv.imshow(image)
def logic_and(m1,m2):
image = cv.bitwise_and(m1,m2)
cv.imshow(image)
def logic_or(m1,m2):
image = cv.bitwise_or(m1,m2)
cv.imshow(image)
def logic_not(m1):
image = cv.bitwise_not(m1)
cv.imshow(image)
def contrast_bright_demo(m1,c,b):
h,w,ch = m1.shape
blank = np.zeros([h,w,ch],m1.dtype)
dst = cv.addWeighted(m1,c,blank,1-c,b)
cv.imshow("contrast_bright_demo",dst)
src = cv.imread("C:/Users/Administrator/Pictures/tt.png")
cv.imshow("inputWindows", src)
contrast_bright_demo(src,0.5,100)
cv.waitKey(0)
cv.destroyAllWindows();
第五节 模糊操作
任务:均值,中值,预定义
应用场合:
#!/usr/bin/env python
# encoding: utf-8
# @Time : 2020/8/7 18:02
# @Author : yq
# @Site :
# @File : tutorial_4.py.py
# @Software: PyCharm
import cv2 as cv
import numpy as np
def blur_demo(image):
dst=cv.blur(image,(15,15))
cv.imshow("blur_demo:",dst)
def mean_demo(image):
dst = cv.mean(image,(5,5))
cv.imshow("mean_demo:", dst)
def medianBlur_demo(image):
dst = cv.medianBlur(image, 5)
cv.imshow("medianBlur_demo:", dst)
def customBlur_demo(image):
# kernel = np.array((1,1,1),(1,1,1),(1,1,1),np.float32)/9
kernel = np.ones([5,5],np.float32)/25
dst = cv.filter2D(image,-1,kernel)
cv.imshow("customBlur_demo",dst)
src = cv.imread("C:/Users/Administrator/Pictures/tt.png")
cv.imshow("inputWindows", src)
customBlur_demo(src)
# medianBlur_demo(src)
# mean_demo(src)
# blur_demo(src)
cv.waitKey(0)
cv.destroyAllWindows();
第六节 高斯滤波
任务:添加高斯噪声 、高斯滤波、计算时间
#!/usr/bin/env python
# encoding: utf-8
# @Time : 2020/8/7 20:58
# @Author : yq
# @Site :
# @File : tutorial_5.py.py
# @Software: PyCharm
import cv2 as cv
import numpy as np
def clamp(dvp):
if(dvp>255):
return 255
elif(dvp<0):
return 0
else:
return dvp
#添加高斯噪音
def gaussian_demo(image):
h,w,ch=image.shape
for row in range(h):
for col in range(w):
s=np.random.normal((0,20,3))
b = image[row , col ,0]
g = image[row , col ,1]
r = image[row , col ,2]
image[row, col, 0] = clamp(b + s[0])
image[row, col, 1] = clamp(g + s[1])
image[row, col, 2] = clamp(r + s[2])
cv.imshow("gaussian_demo",image)
cv.GaussianBlur(image,(0,0),15)
cv.imshow("GaussianBlur", image)
src = cv.imread("C:/Users/Administrator/Pictures/tt.png")
cv.imshow("inputWindows", src)
t1 = cv.getTickCount()
gaussian_demo(src)
t2 = cv.getTickCount()
time = (t2-t1)/(cv.getTickFrequency())
print("time:%s"%(time))
cv.waitKey(0)
cv.destroyAllWindows();