计算机视觉 : 安装cv2第三方库 + 图像的基本操作

全文预览

      • OpenCV安装
      • 熟悉图像基本操作
      • 学习读取视频
      • 练习代码(全)
        • testImg.py
        • testVideo.py
      • 碎碎念

OpenCV安装

使用软件:pycharm,在File选项卡下打开Setting窗口。选择“Project comproject”菜单下的 “Project Interpreter”选修,点击右边的加号,install cv2第三方库。

没错就是这么简单啊哈哈哈哈哈哈,或者你cmd命令直接pip install 也行嗯
计算机视觉 : 安装cv2第三方库 + 图像的基本操作_第1张图片

熟悉图像基本操作

项目目录如下:
计算机视觉 : 安装cv2第三方库 + 图像的基本操作_第2张图片

练习涉及到的基本图像操作包括图片的简单读写、图像复制、色彩变换、显示图像、查看图像尺寸、截取部分图像、图像缩放、输出数字图像、简单图像的数值计算、边界填充和图像融合等。

具体运行结果部分截图如下。
计算机视觉 : 安装cv2第三方库 + 图像的基本操作_第3张图片
怎么说呢,颇具喜剧效果嗯。

计算机视觉 : 安装cv2第三方库 + 图像的基本操作_第4张图片

学习读取视频

利用cv.VideoCapture(),cv.VideoWriter()方法对老师给的素材进行操作。能够成功读取并显示视频。修改部分代码,加快视频播放进度。

练习代码(全)

testImg.py

# -*- coding: utf-8 -*-
# @TIME     : 2020/9/15 11:08
# @Author   : Chen Shan
# @Email    : [email protected]
# @File     : test.py
# @Software : PyCharm

import cv2
import matplotlib.pyplot as plt
import numpy as np

# 安装cv2第三方库测试
# img = cv2.imread(r"C:\Users\Administrator\Pictures\14.jpg")
# cv2.imshow("Image", img)
# cv2.waitKey (0)
# cv2.destroyAllWindows()
# print(cv2.__version__)


# 读取本地图片,并进行BGR到RGB的转换
# img = cv2.imread(r"C:\Users\Administrator\Pictures\temp.jpg")
# b,g,r = cv2.split(img)
# img2 = cv2.merge([r,g,b])

# 显示图片
# cv2.imshow("Image", img)
# cv2.waitKey (0)
# cv2.destroyAllWindows()

# 定义图片显式的方法
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

# cv_show('cat',img)

# 查看图像大小
# print(img.shape)

# 将图像转换为灰度图像并查看图像大小
# img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# print(img_gray.shape)

# 显示灰度图像
# cv_show('cat',img_gray)

# 打印数字图像
# print(img_gray)

# 对比图像像素个数
# print('图像像素个数:'+str(img.size))
# print('灰色图像像素个数:'+str(img_gray.size))

# 保存图像到本地并显示
# cv2.imwrite('mycat.png',img)
# mycat = cv2.imread('mycat.png')
# plt.imshow(mycat)
# cv_show('mycat',mycat)

# 打印图像数据类型
# print(type(img_gray))
# print(img.dtype)


# 截取图像的部分并显示
img = cv2.imread('mycat.png')
# img2 = img[0:100,0:120]
# cv_show('original',img)
# cv_show('ROI',img2)

# 复制图像
cur_img = img.copy()
# 只保留R通道
# cur_img[:,:,0]=0
# cur_img[:,:,1]=0
# cv_show('R channel',cur_img)

# 只保留G通道
# cur_img[:,:,0]=0
# cur_img[:,:,2]=0
# cv_show('G channel',cur_img)

# 只保留B通道
cur_img[:,:,1]=0
cur_img[:,:,2]=0
cv_show('G channel',cur_img)

# 读取方式:灰度图像
# img_cat = cv2.imread('mycat.png',cv2.IMREAD_GRAYSCALE)
#
# top_size,down_size,left_size,right_size=(50,50,50,50)
#
# # plt.imshow(img_cat)
# # cv_show('cat',img_cat)
# replicate = cv2.copyMakeBorder(img_cat,top_size,down_size,left_size,right_size,cv2.BORDER_REPLICATE)
# reflect = cv2.copyMakeBorder(img_cat,top_size,down_size,left_size,right_size,cv2.BORDER_REFLECT)
# reflect_101 = cv2.copyMakeBorder(img_cat,top_size,down_size,left_size,right_size,cv2.BORDER_REFLECT_101)
# wrap = cv2.copyMakeBorder(img_cat,top_size,down_size,left_size,right_size,cv2.BORDER_WRAP)
# constant = cv2.copyMakeBorder(img_cat,top_size,down_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)

# # 显示
# plt.subplot(2,3,1),plt.imshow(img_cat,'gray'),plt.title('original image')
# plt.subplot(2,3,2),plt.imshow(replicate,'gray'),plt.title('replicate')
# plt.subplot(2,3,3),plt.imshow(reflect,'gray'),plt.title('reflect')
# plt.subplot(2,3,4),plt.imshow(reflect_101,'gray'),plt.title('reflect_101')
# plt.subplot(2,3,5),plt.imshow(wrap,'gray'),plt.title('wrap')
# plt.subplot(2,3,6),plt.imshow(constant,'gray'),plt.title('constant')
# # plt.imshow()函数负责对图像进行处理,并显示其格式,
# # plt.show()则是将plt.imshow()处理后的函数显示出来。
# plt.show()

# # 数值计算
# img_cat = cv2.imread('mycat.png')
# img_dog = cv2.imread('mydog.jpg')

# print(img_cat[20:25,20:25,0])
# img_cat2 = img_cat+10
# print(img_cat2[20:25,20:25,0])
# print(img_dog[20:25,20:25,0])

# 重新设定图像大小
# img_cat = cv2.resize(img_cat,(200,200))  # h,w
# print(img_cat.shape)

# print((img_cat+img_dog)[0:5,0:5,0])
# print(cv2.add(img_cat,img_dog)[0:5,0:5,0])

# # 图像融合
# print(img_cat.shape)
# print(img_dog.shape)
# res = cv2.addWeighted(img_dog,0.1,img_cat,0.9,0)
# plt.imshow(res)
# plt.show()
#
# # 图像变形/图像缩放
# img_cat = cv2.resize(img_cat,(0,0),fx=1,fy=2)
# plt.imshow(img_cat)
# plt.show()

testVideo.py

# -*- coding: utf-8 -*-
# @TIME     : 2020/9/26 19:13
# @Author   : Chen Shan
# @Email    : [email protected]
# @File     : testVideo.py
# @Software : PyCharm

import cv2
import matplotlib.pyplot as plt
import numpy as np

# 读取视频
cap = cv2.VideoCapture(r"Siri.mp4")

while cap.isOpened():
    ret, frame = cap.read()
    # 如果正确读取帧,ret为True
    if not ret:
        print("can not read this video, Exit...")
        break

    img_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame', img_gray)

    # if cv2.waitKey(100)& 0xFF ==27:
        # break
    if cv2.waitKey(1) & 0xFF == ord('q'):
       break

cap.release()
cv2.destroyAllWindows()

碎碎念

说实在这应该是一门挺有意思的但我兴趣并不是很大的课,我想想,如果是ldw老师上的话也不会好很多,大概就一般般,但ycz老师也很好(能感受到他的热爱嗯,从不一会就写满的板书),主要是学生的错,保持热情的时间不够,仅止于完成作业吧我想

那么886,哆啦A梦真可爱,特别是瘪嘴流冷汗的,你说是不(是)

你可能感兴趣的:(#,计算机视觉,opencv,计算机视觉)