一天撸完Python-Opencv常用函数和基本思想

前沿

我使用的是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  cv2

1.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()

import  numpy as np
import  cv2
img = cv2.imread("test1.jpg")#注意:这里的0是黑白读取,如果不写,默认是彩色读取
img = cv2.resize(img, (640, 640), interpolation=cv2.INTER_CUBIC) #这个可以控制输出图的大小,人为设定
cv2.imshow("test1",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

img = cv2.resize(img, (640, 640), interpolation=cv2.INTER_CUBIC) #这个可以控制输出图的大小,人为设定

注意衣一副图像尺寸改变是需要进行插值等操作的,如下所示:在这里插入图片描述
cv2.namedWindow(‘image’, cv2.WINDOW_NORMAL) #这句代码是为了对图像进行拉伸等相关操作的
在这里插入图片描述
1.5 保存图像

#!/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
image = cv2.imread("test1.jpg")#注意:这里的0是黑白读取,如果不写,默认是彩色读取cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.namedWindow('image', cv2.WINDOW_NORMAL) #这句代码是为了对图像进行拉伸等相关操作的
k = cv2.waitKey(0)
if k == 27: #wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite('pic.png',image)
    cv2.destroyAllWindows()

后面就不详细说了,直提比较重要的地方

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()

未完,待续…

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值