我使用的是Pycharm编译器 用anaconda配置的解释器 安装的库:numpy matplotlib cv2等
在进行下面的工作之前,给各位说说pycham中添加个人信息
#!/usr/bin/python3.6 # -*- coding: utf-8 -*- # @Time : ${DATE} ${TIME} # @Author : super_kun # @Email : xxxxxxxxxxx@xxx.com # @File : ${NAME}.py # @Software: ${PRODUCT_NAME}这个个人觉得有意思 具体步骤参见链接【Pycharm新建文件时 自动添加作者时间等信息】
1 做图像处理,首先需要进行图像读取
1.1 导入库
import numpy as np import cv21.2 导入图片
img = cv2.imread("test1.jpg",0)#注意:这里的0是黑白读取,如果不写,默认是彩色读取关于读取照片,这里还需要说明的是,最好把照片放在文件所在目录下,否则需要使用完整目录进行,这里我一般使用的是相对路径。
1.3 显示照片
这里需要传入两个值,第一个是名称(就是图像显示窗口的名称),第二个是传入的信息,也就是你的照片(这里是img)
cv2.imshow("test1",img)1.4 需要设置显示的时间和窗口,否则图像会一闪而过,另外需要销毁窗口(关闭的时候,只用加入一行代码即可)
cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.imread(“test1.jpg”,0)#注意:这里的0是黑白读取,如果不写,默认是彩色读取,这里将0去掉 完整代码:
import numpy as np import cv2 img = cv2.imread("test1.jpg")#注意:这里的0是黑白读取,如果不写,默认是彩色读取 cv2.imshow("test1",img) cv2.waitKey(0) cv2.destroyAllWindows()img = cv2.resize(img, (640, 640), interpolation=cv2.INTER_CUBIC) #这个可以控制输出图的大小,人为设定
后面就不详细说了,直提比较重要的地方
2 视频
ret,frame = cap.read() 第一个参数ret 为True 或者False,代表有没有读取到图片 第二个参数frame表示截取到一帧的图片
添加了时间模块,然后对每次读取成功后进行计数加1操作 完整代码如下:
#!/usr/bin/python3.6 # -*- coding: utf-8 -*- # @Time : 2020/10/21 10:21 # @Author : ptg # @Email : zhxwhchina@163.com # @File : opencv-file1.py # @Software: PyCharm """ 以上是作者和文件信息,这个可以在pycharm中进行设置 """ import numpy as np import cv2 import matplotlib.pyplot as plt import time cap = cv2.VideoCapture(0) #这里0代表系统默认相机 count = 0 start_time = time.time() while(True): # capture from-by-from ret,frame = cap.read() # Our operation on the frame come here # gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) if ret != True: break if ret == True: count+= 1 cv2.imshow('frame',frame) if cv2.waitKey(1)& 0xFF==ord('q'): break cap.release() end_time = time.time() cv2.destroyAllWindows() sum_time = end_time - start_time print(count) print(sum_time)3 对图像进行通道赋值操作
import numpy as np import cv2 import matplotlib.pyplot as plt import time img = cv2.imread("test1.jpg") img[:,:,2] = 0; # img[:,:,0] = 0; # img[:,:,1] = 0; cv2.imshow("img",img) cv2.waitKey(0) cv2.destroyAllWindows()可以看到颜色发生改变 在计算机中,一般是B\G\R这个需要注意 而不是使用 这样做比较费时
4 图像的算数运算 4.1 图像混合
import numpy as np import cv2 import matplotlib.pyplot as plt import time img1 = cv2.imread("test1.jpg") img1 = cv2.resize(img1, (320, 320), interpolation=cv2.INTER_CUBIC) img2 = cv2.imread("test2.jpg") img2 = cv2.resize(img2, (320, 320), interpolation=cv2.INTER_CUBIC) # 注意在使用下面的这个函数的时候,需要确保img1,img2两张图像的尺寸是大小一致的,否则是不能进行叠加的 # 为了使得两幅图的尺寸是一致的,我这里进行了尺寸大小的重新设定,也就是上面的代码 dst = cv2.addWeighted(img1,0.3,img2,0.4,0) cv2.imshow("img1",img1) cv2.imshow("img2",img2) cv2.imshow("dst",dst) cv2.waitKey(0) cv2.destroyAllWindows()5 颜色空间HSV
#!/usr/bin/python3.6 # -*- coding: utf-8 -*- # @Time : 2020/10/21 10:21 # @Author : ptg # @Email : zhxwhchina@163.com # @File : opencv-file1.py # @Software: PyCharm # """ # 以上是作者和文件信息,这个可以在pycharm中进行设置 # """ # import numpy as np # import cv2 # import matplotlib.pyplot as plt # import time # # # cap = cv2.VideoCapture(0) #这里0代表系统默认相机 # count = 0 # start_time = time.time() # while(True): # # capture from-by-from # ret,frame = cap.read() # # # Our operation on the frame come here # # gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) # # if ret != True: # break # if ret == True: # count+= 1 # cv2.imshow('frame',frame) # if cv2.waitKey(1)& 0xFF==ord('q'): # break # cap.release() # end_time = time.time() # cv2.destroyAllWindows() # sum_time = end_time - start_time # print(count) # print(sum_time) # import numpy as np # import cv2 # import matplotlib.pyplot as plt # import time # # img = cv2.imread("test1.jpg") # img[:,:,2] = 0; # # img[:,:,0] = 0; # # img[:,:,1] = 0; # cv2.imshow("img",img) # cv2.waitKey(0) # cv2.destroyAllWindows() # # import numpy as np # import cv2 # import matplotlib.pyplot as plt # import time # img1 = cv2.imread("test1.jpg") # img1 = cv2.resize(img1, (320, 320), interpolation=cv2.INTER_CUBIC) # img2 = cv2.imread("test2.jpg") # img2 = cv2.resize(img2, (320, 320), interpolation=cv2.INTER_CUBIC) # # 注意在使用下面的这个函数的时候,需要确保img1,img2两张图像的尺寸是大小一致的,否则是不能进行叠加的 # # 为了使得两幅图的尺寸是一致的,我这里进行了尺寸大小的重新设定,也就是上面的代码 # dst = cv2.addWeighted(img1,0.3,img2,0.4,0) # cv2.imshow("img1",img1) # cv2.imshow("img2",img2) # cv2.imshow("dst",dst) # cv2.waitKey(0) # cv2.destroyAllWindows() import numpy as np import cv2 import matplotlib.pyplot as plt import time cap = cv2.VideoCapture(0) while(True): # 获取每一帧 ret,frame = cap.read() if ret == False: break # 转换到HSV hsv = cv2.cvtColor(frame,cv2.COLOR_RGB2HSV) # 设定蓝色的阈值 lower_blue = np.array([110,50,50]) upper_blue = np.array([130,255,255]) # 根据阈值构建掩膜 mask = cv2.inRange(hsv,lower_blue,upper_blue) # 对原图像和掩膜进行为运算 res = cv2.bitwise_and(frame,frame,mask=mask) # 显示图像 cv2.imshow("frame",frame) cv2.imshow("mask",mask) cv2.imshow("res",res) k = cv2.waitKey(2000)&0xFF if k == 27: break # 关闭窗口 cv2.destroyAllWindows()未完,待续…