opencv 图像和视频处理的基本操作(python)

这篇具有很好参考价值的文章主要介绍了opencv 图像和视频处理的基本操作(python)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原图:

opencv 图像和视频处理的基本操作(python)

 

1 图片的获取

  主要通过cv2.imread(src)函数进行获取

 #获取图片,请注意更改路径 支持绝对路径,该函数产生的图片灰度系数数组
img = cv2.imread('Sunrise.jpg');
#获取灰度图
img_gray = cv2.imread('C:/Users/10275/Pictures/Sunrise.jpg',cv2.IMREAD_GRAYSCALE)

2 图片的显示

1 def cv_show(name,img):
2     #第一个参数是窗口的名字,随便取,第二个是需要展示图片的灰度系数数组
3     cv2.imshow(name,img) 
4     #参数为图片显示的时间,单位是毫秒,0是任意键关闭图片
5     cv2.waitKey(0) 
6     #关闭所有窗口
7     cv2.destroyAllWindows()
8     #保存图片
9     #cv2.imwrite(name,img)

3 ROI区域(图片截取)

#图片截图
img_part = img[0:100,0:100] 

4 图片的RGB通道划分

  注意cv2.imread()获取的图片通过顺序为BGR,而非RGB,即B为0,G为1,R为2

 1 #切分为三通道
 2 b,g,r = cv2.split(img)
 3 
 4 #只保留R通道
 5 cur_Rimg = img.copy()
 6 cur_Rimg[:,:,0] = 0 #将B通道关闭
 7 cur_Rimg[:,:,1] = 0 #将G通道关闭
 8 cv_show('R',cur_Rimg)
 9 
10 #只保留G通道
11 cur_Gimg = img.copy()
12 cur_Gimg[:,:,0] = 0
13 cur_Gimg[:,:,2] = 0
14 cv_show('G',cur_Gimg)
15 
16 #只保留B通道
17 cur_Bimg = img.copy()
18 cur_Bimg[:,:,1] = 0
19 cur_Bimg[:,:,2] = 0
20 cv_show('B',cur_Bimg)

 保留R通道

opencv 图像和视频处理的基本操作(python)

 保留G通道

opencv 图像和视频处理的基本操作(python)

 

保留B通道

opencv 图像和视频处理的基本操作(python)

 

5 RGB通道合成

#将三通道合成为一个图片
img = cv2.merge((b,g,r)) 

opencv 图像和视频处理的基本操作(python)

 

6 边界填充

  主要是通过cv2.copyMakeBorder(src, top_size,bottom_size,left_size,right_size,borderType)函数进行

  src:原图片

  top_size.top_size,bottom_size,left_size,right_size:为上下左右方向的填充宽度

  borderType:填充的方法

 1 top_size,bottom_size,left_size,right_size = (100,100,100,100)
 2 #复制法,复制最边缘的像素
 3 replicate = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
 4 #反射法,按照边界进行反射 如abcdefgh | hgfedcba
 5 reflect = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)
 6 #反射101法,按照边缘进行反射 相当于去掉了反射法的边界重复值 abcdefg | fedcba
 7 reflect101 = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT_101)
 8 #平铺法,图像反复重复
 9 wrap  = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_WRAP)
10 #常量法,常数值填充
11 constant = cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT)
12 
13 plt.subplot(231),plt.imshow(img,'gray'),plt.title('ORIGIN')
14 plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('Replicate')
15 plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('Reflect')
16 plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('Reflect101')
17 plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('Wrap')
18 plt.subplot(236),plt.imshow(constant,'gray'),plt.title('Constant')
19 plt.show()

opencv 图像和视频处理的基本操作(python)

 

7 数值的计算

1 #灰度系数的加10
2 img2 = img + 10
3 print(img[:5,:,0])
4 print(img2[:5,:,0])
5 #当灰度超过255时候 会将值对256取模
6 print(img+img2[:5,:,0])
7 #使用cv2的add时候 灰度系数达到255时,则不再取模 而是直接使用255
8 print(cv2.add(img,img2)[:5,:,0])

8 图片的融合

1 #注意此处相加 如果两个图片的宽高比不同,则无法相加
2 #print(img + img2)
3 #若是两个图片宽高不同则事先需要进行resize 后面的500,414是来源于 img.shape的值
4 img2 = cv2.resize(img2,(500,414))
5 #宽度拉伸3倍,高度不变
6 img4 = cv2.resize(img,(0,0),fx=3,fy=1)
7 #图片融合 公式为 R = αimg1+βimg2+b  其中 α为img1在融合后图的权重,β为img2在融合图后的权重,b是增加灰度
8 res = cv2.addWeighted(img,0.4,img2,0.6,0)

9 图像的阈值

  ret,dst = cv2.threshold(src,thresh,maxval,type)

  • ret:返回的阈值
  • dst:返回的图像
  • src:已通过cv2,read获取的图片
  • thresh:设定的阈值 一般为127 为0~255的中间
  • maxval:当像素值超过了阈值,所赋予的值
  • type:二值化操作的类型
#超过阈值的部分取maxval,否则取0
ret,thresh1 = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY)
#Thresh_Binary的反转
ret,thresh2 = cv2.threshold(img_gray,127,255,cv2.THRESH_BINARY_INV)
#大于阈值部分设为阈值,否则不变
ret,thresh3 = cv2.threshold(img_gray,127,255,cv2.THRESH_TRUNC)
#大于阈值部分不变,否则为0
ret,thresh4 = cv2.threshold(img_gray,127,255,cv2.THRESH_TOZERO)
#Thresh_Tozero的反转
ret,thresh5 = cv2.threshold(img_gray,127,255,cv2.THRESH_TOZERO_INV)

tiles = ['Origin','Binary','Binary_Inv','Trunc','ToZero','ToZero_Inv']
images = [img_gray,thresh1,thresh2,thresh3,thresh4,thresh5]

for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
    plt.title(tiles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

对于自适应阈值分割方法 我将重新开一篇

 

10 视频的获取和显示

 

 1 #视频读取
 2 vc = cv2.VideoCapture('test.mp4')
 3 
 4 #检测视频是否正常打开
 5 if vc.isOpened():
 6     open,frame = vc.read() #返回第一个参数为bool值用于检测该帧是否正常打开,第二个参数为该帧的图片
 7 else:
 8     open = False
 9 #循环读取视频
10 while open:
11     ret,frame = vc.read()
12     if frame is None: #如果该帧内容为空说明视频抵达最后,则跳出循环
13         break
14     if ret == True: #如果ret返回True 说明已经正常打开该帧
15         gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #直接将该帧转换为灰度图像
16         cv2.imshow('result',gray) #每帧的展示
17         if cv2.waitKey(10) & 0xFF == 27: #每帧的持续时长 和 退出视频按键
18             break
19 vc.release() #释放资源
20 cv2.destroyAllWindows() #关闭全部窗口

 

  文章来源地址https://www.toymoban.com/news/detail-420474.html

到了这里,关于opencv 图像和视频处理的基本操作(python)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv+Python图像基本操作

    目录 图像的读取、显示和保存 获取图像属性  图像截取  绘图功能 画线 画矩形 画圆圈 画椭圆          画多边形 向图像添加文本 cv2.imread() ,  cv2.imshow() ,  cv2.imwrite()分别表示读取图片,显示图片,写入图片   retval = cv2.imread(文件名 [,显示控制参数]) cv2.IMREAD_UNCHANGED:不改

    2024年02月04日
    浏览(54)
  • 【Python_Opencv图像处理框架】图像基本操作+90bb5729-b33a-4e82-a0d9-faa3e5cbf621

    很幸运能选择Python语言进行学习,这是有关Opencv的图像处理的第一篇文章,讲解了有关图像处理的一些基础操作,作为初学者,我尽己所能,但仍会存在疏漏的地方,希望各位看官不吝指正❤️ 1. 计算机眼中的图像 计算机眼中的图像由一个个像素组成, 每个像素点的值在

    2023年04月18日
    浏览(41)
  • Python Opencv实践 - 基本图像IO操作

       

    2024年02月14日
    浏览(61)
  • python数字图像处理基础(二)——图像基本操作、滑动条、鼠标操作

    import cv2 import numpy as np import matplotlib.pyplot as plt 图像读取 cv2.MREAD_COLOR: 彩色图像 或用1 cv2.IMREAD_GRAYSCALE:灰度图像 或用0 img = cv2.imread(‘cat.jpg’, cv2.IMREAD_GRAYSCALE) 等同于: img = cv2.imread(‘cat.jpg’, 0) 图像的显示,也可以创建多个窗口 cv2.imshow(‘img’, img) 等待时间,毫秒级,0表示

    2024年01月18日
    浏览(60)
  • python学习-->opencv图像基本操作学习之灰度图转换

    好久没更新,趁今天要做核酸回不了宿舍,把今天的学习的opencv知识先记录一下! 运行环境是:pycharm 话不多说,献上代码再说: 首先我们先读取我们的图片进来! 跟着我们先尝试一下在打开我们的图片看看! 下面是实现的代码! 运行之后我的图片是这样的 我们可以看看图

    2024年02月08日
    浏览(60)
  • python+moviepy音视频处理(一):基本操作

    目录 视频处理 视频加载和输出 视频转换gif 视频裁剪 视频音量调节 去掉视频声音 视频中的音频提取与替换 获取视频属性 倍数播放视频 截取视频某帧为封面 多视频拼接 音频处理 替换视频文件的音频 多个音频文件拼接 安装:pip install moviepy 中文官网:moviepy-cn 文档 \\\'\\\'\\\' movie

    2023年04月23日
    浏览(54)
  • [笔记]Python计算机视觉编程《一》 基本的图像操作和处理

    今天,图像和视频无处不在,在线照片分享网站和社交网络上的图像有数十亿之多。几乎对于任意可能的查询图像,搜索引擎都会给用户返回检索的图像。实际上,几乎所有手机和计算机都有内置的摄像头,所以在人们的设备中,有几 G 的图像和视频是一件很寻常的事。计算

    2024年02月02日
    浏览(55)
  • OpenCV基本操作——图像的基础操作

    注:opencv图像坐标系中,左上角是原点,y轴向下,x轴向右,单位像素点 有时需要在B,G,R通道图像上单独工作。在这种情况下,需要将BGR图像分割成单个通道。或者在其他情况下,可能需要将这些单独的通道合并到BGR图像 opencv中有150多种颜色空间转换方法。最广泛使用的转

    2024年02月13日
    浏览(96)
  • 【笔记】OpenCV图像基本操作

    目录 一、图像属性 1.1图像格式 1.2图像尺寸 1.3图像分辨率和通道 1.4图像直方图 1.5图像颜色空间 二、基本操作 2.1 图像读取 cv2.imread() 2.2 图像的显示 cv2.imshow() 2.3 图像的保存 cv2.imwrite() 2.4 用matplotlib显示图像 plt.imshow() 2.5 视频读取 cv2.VideoCapture() 2.6 图像截取、颜色通道提取

    2024年02月03日
    浏览(504)
  • opencv学习(一)图像的基本操作

    cv2.IMREAD_COLOR:彩色图像 cv2.IMREAD_GRAYSCALE:灰度图像 cv2.imread()读取图片,当括号里面是 1 时,也就是替代了cv2.IMREAD_COLOR,得到 彩色图 。 cv2.imread()读取图片,当括号里面是 0 时,替代了cv2.IMREAD_GRAYSCALE,得到 灰度图 。 cv.inshow()函数为创建一个展示窗口,括号里面分别为 图片名字

    2024年02月05日
    浏览(121)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包