opencv-python图像处理安装与基本操作方法

 更新时间:2022年01月05日 09:26:41   作者:NewSuNess  
OpenCV是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题,它涵盖了很多计算机视觉领域的模块。在Python中常使用OpenCV库实现图像处理。本文介绍opencv-python图像处理安装与基本操作,感兴趣的朋友一起看看吧

一、安装opencv

关于opencv的安装,如果是windows系统下使用pycharm,那么直接在在终端使用pip命令或者点击设置-python解释器输入opencv-python即可

如果使用的是conda,那也可以使用pip命令或者conda install 安装
在linux下的话更加简单。而且也会少很多无缘无故的bug,推荐使用linux系统。linux下使用终端输入pip或者pip3 install opencv-python即可,前提是已经安装了python并且设置好了路径变量。

二、 opencv使用

想要使用opencv,必须在代码开头导入opencv的包,这里和安装时候的名字不一样,使用命令:
import cv2
导入包。并且需要安装matplotlib和numpy。
1、 图片的读取

img = cv2.imread("car_green.jpg")

括号内是图片文件的名字,如果代码与图片在同一目录下可以这样做,但是如果不在同一目录下,就需要包含图片文件的完整路径。使用该语句读取图片,将会返回一个ndarray类型的矩阵(行数,列数,通道数)
显示刚才读取的图片:
注意:opencv读取到的图片格式为BGR格式。

cv2.imshow("name", img)
# 等待时间, 毫秒级, 0表示任意键终止
cv2.waitKey(0)

2、获取摄像头的视频流

def video_get():
    capture = cv.VideoCapture(0)
    # 保存视频流的每一帧
    while True:
        ret, frame = capture.read()
        # 翻转图像,原图像是左右颠倒的
        frame = cv.flip(frame, 1)
        cv.imshow("video", frame)
        c = cv.waitKey(50)
        if c == 27:
            break

3、保存获取到的图像

cv.imwrite(想要保存的文件路径, 图像文件)

4、灰度图转化
读取时直接读取为灰度图:

img = cv2.imread(path, cv.IMREAD_GRAYSCALE)

读取时是彩色,转化为灰度图

img = cv.imread("car_red.jpg")
img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow("ing", img)
cv.waitKey(0)
cv.destroyAllWindows()

5、获取图像的部分区域
由于读取到的图片是ndarray类型的,因此可以使用切片操作来获取图像的某一部分:

roi = img[ 起始:结束, 起始:结束]

6、将彩色图片的通道拆分与合并
因为彩色图片是三通道的,假设图片尺寸为128x128,那么他就包含三个128*128的颜色矩阵

img = cv.imread("car_red.jpg")
cv.imshow("img", img)
# 注意格式为BGR
b, g, r = cv.split(img)
# 通道合并,注意矩阵的顺序,这样合成的图片为BGR格式
img = cv.merge((b, g ,r))
cv.imshow("img1", img)
cv.waitKey(0)
cv.destroyAllWindows()

三通道提取出来之后,每个通道其实如果显示的话,就是单独的灰度图,因为图片的通道数变为1了。
想要显示为RGB某一颜色,可以使用切片将其他颜色通道变为0

7、边界填充
将图片进行边界填充操作:

cv.copyMakeBorder(img, 50, 50, 50, 50, borderType=cv.BORDER_REFLECT)

其参数为,图片源, 上下左右的填充距离(50,50,50,50), borderType参数表示填充方法。
BORDER_REPLICATE: 复制法,复制图片最边缘像素
BORDER_REFLECT:反射法,对感兴趣的图像像素在两边进行复制
BRDER_REFLECT_101:反射法,以最边缘像素为轴
BORDER_WRAP:外包装法
BORDER_CONSTANT:常量法,常数值填充
记得在函数前定义一个变量接受该函数的返回值。
8、图像尺寸更改
使用resize函数对图片尺寸进行修改

red = cv.imread("car_red.jpg")
# 括号内的元组表示的是图片的长和宽,也就是其对于矩阵的列和行
red = cv.resize(red, (475, 245))

图片的尺寸我们使用长和宽来表示,矩阵的大小使用的是行和列,对应的图片的长就对应与矩阵的列,因此要注意输入的尺寸到底是图片尺寸还是矩阵尺寸,对于方阵来说没有区别,但是对于其他矩阵来说影响很大。
还有一种方法就是不指定其大小,通过指定x、y轴的扩展倍数来完成图像更改。

red = cv.resize(red,  (0, 0),fx=3, fy=4 )

9、图像融合
想要矩阵能相加,那么其必须是等尺寸的,在上面将两图处理为相同大小的图片之后,就能对其进行图像融合处理操作了。

green = cv.imread("car_green.jpg")
print(green.shape)
red = cv.imread("car_red.jpg")
red = cv.resize(red, (475, 245))
print(red.shape)
res = cv.addWeighted(red, 0.4, green, 0.6, 0)
cv.imshow("res", res)
cv.waitKey(0)
cv.destroyAllWindows()

图像融合其本质就是矩阵相加,上面的函数可以看作一个公式:
F = ared + bgreen + c
其中a = 0.4 b = 0.6, c = 0这些系数都是我们可以自己进行设置的
处理后的图片如下:

到此这篇关于opencv-python图像处理安装与基本操作的文章就介绍到这了,更多相关opencv python图像处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基于gevent实现文件字符串查找器

    Python基于gevent实现文件字符串查找器

    这篇文章主要介绍了Python基于gevent实现文件字符串查找器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 听歌识曲--用python实现一个音乐检索器的功能

    听歌识曲--用python实现一个音乐检索器的功能

    本篇文章中主要介绍了用python实现一个音乐检索器,类似于QQ音乐的摇一摇识曲,有兴趣的同学可以了解一下。
    2016-11-11
  • Python xpath表达式如何实现数据处理

    Python xpath表达式如何实现数据处理

    这篇文章主要介绍了Python xpath表达式如何实现数据处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 浅谈Python实现Apriori算法介绍

    浅谈Python实现Apriori算法介绍

    这篇文章主要介绍了浅谈Python实现Apriori算法介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 遗传算法之Python实现代码

    遗传算法之Python实现代码

    本篇文章主要介绍了Python 遗传算法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 教你使用python做一个“罚点球”小游戏

    教你使用python做一个“罚点球”小游戏

    这篇文章主要介绍了用python做一个“罚点球”小游戏,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • pandas 数据透视和逆透视的实现

    pandas 数据透视和逆透视的实现

    本文介绍了pandas 数据透视和逆透视的实现,包含pivot()方法透视及pivot_table()方法逆透视,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • Python使用for实现无限循环的多种方式汇总

    Python使用for实现无限循环的多种方式汇总

    这篇文章主要介绍了Python使用for实现无限循环的多种方式汇总,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Python基于FTP模块实现ftp文件上传操作示例

    Python基于FTP模块实现ftp文件上传操作示例

    这篇文章主要介绍了Python基于FTP模块实现ftp文件上传操作,结合实例形式分析了Python引入ftp模块及相关设置、文件传输等操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python实现PC屏幕截图并自动发送邮件

    Python实现PC屏幕截图并自动发送邮件

    在当前的数字化世界中,自动化已经成为我们日常生活和工作中的关键部分,本文我们将探讨如何使用Python来实现一个特定的自动化任务 - PC屏幕截图自动发送到指定的邮箱,感兴趣的可以了解下
    2023-11-11

最新评论