Opencv各基本函数的作用及示例1(对图像的基础处理)

img=cv2.imread(“cat.jpeg”) 作用:读入图片,并可将其赋值给变量,括号内参数为要读取的文件名,文件名后要加上文件的格式,如:jpg,jpeg等格式(要加引号)。 cv2.imshow(“image”,img) 作用:展示指定的图片 括号内参数有两个,第一个为打开的窗口名,这个可以随个人习惯命名(要加引号),第二参数个则是所读入的要展示的图片变量。 cv2.waitKey(0) cv2.destroyAllWindows() 这两个函数一般放在一起使用,

img=cv2.imread(“cat.jpeg”) 作用:读入图片,并可将其赋值给变量,括号内参数为要读取的文件名,文件名后要加上文件的格式,如:jpg,jpeg等格式(要加引号)。
cv2.imshow(“image”,img) 作用:展示指定的图片 括号内参数有两个,第一个为打开的窗口名,这个可以随个人习惯命名(要加引号),第二参数个则是所读入的要展示的图片变量。
cv2.waitKey(0)
cv2.destroyAllWindows()
这两个函数一般放在一起使用,第一个函数括号内为所要等待的毫秒数,第二个函数则是关闭窗口。如果第一个参数设为0,则两个函数连在一起表示按任意键关闭窗口,否则表示在等待多少毫秒之后关闭窗口。
vc = cv2.VideoCapture(“test.mp4”) 作用:读入视频流,并可将其赋值给变量,括号内参数为要读取的视频文件名,文件名后要加上文件的格式,如:MP4等格式(要加引号),也可以捕获摄像头读取实时视频,括号内以数字代替设备即可。
ret,frame=vc.read() 作用:读取一帧的视频 参数:前面的VC是读入视频流的变量名,跟前面读取的视频流变量名一样即可。该函数返回两个值,第一个为判断是否读取成功的布尔值,第二个为读入的内容,可将其分别赋值给两个变量。
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) 作用:将读取到的每一帧视频转化为图片,并且可以赋值给变量,其后参数若为cv2.COLOR_BGR2GRAY则表示转化为灰度图。
cat = img[0:50,0:200] 作用:以图片左上角为原点,切分出想要的图片范围,同样可赋值给其他变量,两个参数分别为横轴取值范围和竖轴取值范围。
cv2.addWeighted(img_cat, 0.4,img_dog, 0.6,0) 作用:融合两幅图像 参数:第一个为图片变量名,第二个为融合所占比重,第三第四同上。
import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
img = cv2.imread("cat.jpeg")
#根据颜色通道提取数据
b,g,r = cv2.split(img)#先根据颜色通道对数组进行切片处理,记住b,g,r,三者的顺序不能换
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,1] = 0
cv_show("R",cur_img)#显示红色的猫
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,2] = 0
cv_show("G",cur_img)#绿猫
cur_img = img.copy()
cur_img[:,:,1] = 0
cur_img[:,:,2] = 0
cv_show("B",cur_img)#蓝猫
cur_img = img.copy()
cur_img[:,:,0] = 0
cur_img[:,:,1] = 1
cur_img[:,:,2] = 2
cv_show("BLACK",cur_img)#全黑

效果图

Opencv各基本函数的作用及示例1(对图像的基础处理)

Opencv各基本函数的作用及示例1(对图像的基础处理)

Opencv各基本函数的作用及示例1(对图像的基础处理)

以下是读取视频文件的示例代码

import numpy as np#导入所用的包
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
def cv_show(name,img):#构造展示图像的函数
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
vc = cv2.VideoCapture("test.mp4")#读取视频流(支持大部分格式),可以捕获摄像头,以数字来控制不同的设备,例如0和1等等
if vc.isOpened():#会返回一个布尔值,判断视频能否打开
    open,frame = vc.read()#读取第一帧图像,返回两个值,此时open是一个布尔值,frame则是三维数组
else:
    open = False#如果打开不成功,返回False
while open:#如果上面读取成功,这里就相当于whille True
    ret,frame = vc.read()#再读取一帧
    if frame is None:#如果读入的是空值,则退出循环
        break
    if ret ==True:
        gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#将读取到的每一帧图片都转化为灰度图
        cv2.imshow("result",gray)#播放图片
        if cv2.waitKey(10) & 0xFF == 27:#如果达到等待时间或者按下退出键,则跳出这层循环
            break
vc.release()#释放摄像头
cv2.destroyAllWindows()#关闭窗口

以下是图片融合代码

import numpy as np
import cv2
import matplotlib.pyplot as plt
%matplotlib inline
img_dog = cv2.imread("dog.jpeg")#读入一张狗狗图片
img_cat = cv2.imread("cat.jpeg")#读入一张猫咪图片
img_dog = cv2.resize(img_dog,(600,400))#需要先将两张图片的像素数量调整到一样才能进行融合
img_cat = cv2.resize(img_cat,(600,400))
res = cv2.addWeighted(img_cat, 0.4,img_dog, 0.6,0)#融合图片,0.4和0.6是两者图像融合是分别所占的比例
cv_show("res",res)#以opencv的方法进行展示
plt.imshow(res)#以 matplotlib.pyplot的方法进行展示

以下是两张原图以及融合后的效果图

Opencv各基本函数的作用及示例1(对图像的基础处理)

 Opencv各基本函数的作用及示例1(对图像的基础处理)

 这个是采用opencv的方法显示的效果Opencv各基本函数的作用及示例1(对图像的基础处理)

 这个是采用 matplotlib.pyplot方法的显示效果

Opencv各基本函数的作用及示例1(对图像的基础处理)

可以看到,采用  matplotlib.pyplot方法进行显示的图片出现了明显的颜色变化,这是由于两个函数库读取图片格式不一样的缘故,matplotlib.pyplot是按照RGB进行读取的,而opencv是按照BGR进行读取的,两者刚好相反,因此在实际操作时,尽量不要混淆两者的使用,虽然两者都能显示图像,但如果需要同时使用需要对像素进行修改调整。

版权声明:本文为博主念980原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_62343847/article/details/122569766

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2022年1月18日 下午10:57
下一篇 2022年1月18日 下午11:29

相关推荐