第一次作业——灰度视频处理让其成为伪彩色视频(Linux系统下)

先要安装一个OpenCV,参考于以下链接。

http://t.csdn.cn/xFy2t

本次作业是处理图像,想要学会如何用代码处理图像就要先学会怎么处理但张的图片,因为视频是由一帧帧的图片合成的。

首先是如何读如图片文件,要使用函数imread(),使用这个函数之前,我们要先引入OpenCV的对象cv2。

import cv2

之后我们就可以使用imread(),基本格式为pciture = cv2.imread(文件地址,flags),中的flags参数可以省略,一般的若flags等于1则读取为彩色图像,若flags等于0则读取为灰度图像。

例子:

imgFile = "../Pictures/image0.jpg"  #注意图片名称后面要带图片格式例如jpg,png 。

img2 = cv2.imread(imgFile,flags = 1)  #以彩色图像进行读取。

读取图片对图片进行操作之后要保存图片,就需要用到imwrite()函数,

基本格式为cv2.imwrite(保存文件的地址,保存对象)

例子:

saveFile = "../Pictures/images3.jpg"

cv2.imwrite(saveFile, img3)

图片处理之后当然就需要看效果,用到imshow()函数,基本格式为cv2.imshow(以此名称展示图片,展示对象)

例子:

cv2.imshow("Demo1", img3)

个人觉得imshow()跟imwrite()函数在不涉及到循环的情况下,其先后顺序并无讲究,涉及到的情况以后遇到了在进行详细说明。

”读取“,”保存“既然都说明了,那么还差最关键的图片处理部分!

本次作业中我用来处理灰度图像的函数是applyColorMap(),它可以将灰度图像转换成彩色图像

完整的代码如下:

img3 = cv2.applyColorMap(cv2.convertScaleAbs(img2, alpha = 2), cv2.COLORMAP_HOT)

基本格式为:allpyColorMap(文件对象,颜色空间)#一般的颜色空间的index为0-21

颜色空间可参考以下内容

COLORMAP_AUTUMN = 0, //!< ![autumn](pics/colormaps/colorscale_autumn.jpg)
    COLORMAP_BONE = 1, //!< ![bone](pics/colormaps/colorscale_bone.jpg)
    COLORMAP_JET = 2, //!< ![jet](pics/colormaps/colorscale_jet.jpg)
    COLORMAP_WINTER = 3, //!< ![winter](pics/colormaps/colorscale_winter.jpg)
    COLORMAP_RAINBOW = 4, //!< ![rainbow](pics/colormaps/colorscale_rainbow.jpg)
    COLORMAP_OCEAN = 5, //!< ![ocean](pics/colormaps/colorscale_ocean.jpg)
    COLORMAP_SUMMER = 6, //!< ![summer](pics/colormaps/colorscale_summer.jpg)
    COLORMAP_SPRING = 7, //!< ![spring](pics/colormaps/colorscale_spring.jpg)
    COLORMAP_COOL = 8, //!< ![cool](pics/colormaps/colorscale_cool.jpg)
    COLORMAP_HSV = 9, //!< ![HSV](pics/colormaps/colorscale_hsv.jpg)
    COLORMAP_PINK = 10, //!< ![pink](pics/colormaps/colorscale_pink.jpg)
    COLORMAP_HOT = 11, //!< ![hot](pics/colormaps/colorscale_hot.jpg)
    COLORMAP_PARULA = 12, //!< ![parula](pics/colormaps/colorscale_parula.jpg)
    COLORMAP_MAGMA = 13, //!< ![magma](pics/colormaps/colorscale_magma.jpg)
    COLORMAP_INFERNO = 14, //!< ![inferno](pics/colormaps/colorscale_inferno.jpg)
    COLORMAP_PLASMA = 15, //!< ![plasma](pics/colormaps/colorscale_plasma.jpg)
    COLORMAP_VIRIDIS = 16, //!< ![viridis](pics/colormaps/colorscale_viridis.jpg)
    COLORMAP_CIVIDIS = 17, //!< ![cividis](pics/colormaps/colorscale_cividis.jpg)
    COLORMAP_TWILIGHT = 18, //!< ![twilight](pics/colormaps/colorscale_twilight.jpg)
    COLORMAP_TWILIGHT_SHIFTED = 19, //!< ![twilight shifted](pics/colormaps/colorscale_twilight_shifted.jpg)
    COLORMAP_TURBO = 20, //!< ![turbo](pics/colormaps/colorscale_turbo.jpg)
    COLORMAP_DEEPGREEN = 21  //!< ![deepgreen](pics/colormaps/colorscale_deepgreen.jpg)

可以看到applyColorMap的参数中还有一个cv2.convertScaleAbs函数,这个函数作用大约就是用来调整图片的对比度色差的,其返回值是处理之后的图片,基本格式:convertScaleAbs(图片对象,alpha)其中alpha的数值表示处理的程度,数值越大对比度色差越大。

图片的处理已经完成了 ,现在需要做的就是把读如视频并且把视频分成一帧帧的图片来处理。

读如视频文件用的是VideoCapture()函数,参数是需要读如文件的地址,一般将地址赋予另一个对象,然后传入这个对象。

例子:

video_path = "../Videos/PLANE.mp4"

cap = cv2.VideoCapture(video_path)

读取了视频之后我们需要知道视频有多少帧,需要用到函数cap.get(cv2.CAP_PROP_FRAME_COUNT)函数,此函数参数的相关问题等到以后需要用到相关功能的时候进行总结统一介绍。

frame_count = cap.get(cv2.CAP_PROP_FRAME_COUNT)

获取了视频cap的总帧数frame_count之后需要以此为长度用for循环来处理每一张图片。

for i in range(int(frame_count)):

Result,img = cap.read()

imgs = cv2.applyColorMap(cv2.convertScaleAbs(img, alpha = 2), cv2.COLORMAP_HOT)

cv2.imwrite((image_save+"/image{}.jpg").format(i),imgs)

其中 Result,img = cap.read() ,Result的值为True或者False,表示是否成功截取一帧图片。

img表示截取的那一帧图片对象,是可以直接拿来作为对象使用的。

然后在把这些处理好的图片以统一带顺序的名称命名并且保存,参考与以下语句:

cv2.imwrite((image_save+"/image{}.jpg").format(i),imgs)

其中的这一段如何进行理解?

image_save :  "../Demo_Pictures" , 代表的意思是保存文件的路径,“+”表示加上,也就是加上“/image{}.jpg",结果等于"../Demo_Pictures/image{}.jpg",综合imwrite语句表达的意思就是将图片以名称 image{},格式为jpg的方式来存储图片。后面的  .format(i) 的作用是给文件名后面添加一个序号用来在文件夹里面给文件进行排序。

到了这里,python变成的部分也就结束了。

然后我们需要用到下面的语句把处理好的文件合成视频。

ffmpeg -i ../Demo_Pictures/image%d.jpg -pix_fmt yuv420p out.mp4

到了这里本次作业的内容也就完成了。

注:本文章仅用于记录自己学习

参考:

http://t.csdn.cn/xFy2t

https://blog.csdn.net/juzicode00/article/details/120985400

001如何将灰度视频处理为伪彩色相关推荐

  1. n行Python代码系列:两行代码实现彩色视频转换为灰度视频

    ☞ ░ 老猿Python博文目录 ░ 一.引言 最近看到好几篇类似"n行Python代码-"的博文,看起来还挺不错,简洁.实用,传播了知识.带来了阅读量,撩动了老猿的心,决定跟风一 ...

  2. rainbow彩虹颜色表(灰度转RGB彩色/伪彩色)

    1.颜色表 0-255灰度到彩色映射表,参考HDF5View中的rainbow. 0 0 0 125 0 255 121 0 255 116 0 255 112 0 255 108 0 255 103 ...

  3. auto.js 001 打开文章及视频

    // console.show()// sleep(3000)launchApp("学习强国") toastLog("睡眠4秒") sleep(4000);va ...

  4. python opencv实现灰度图的符号化(仿qgis单波段伪彩色)

    一.前言: 博主在使用qgis对图像进行处理的时候,发现qgis里面图层的符号化可以讲灰度图进行单波段伪彩色的操作,很方便对图像进行观察,后期需要大批量处理图像,所以用python实现了这个功能. 二 ...

  5. OpenCV之highgui 模块. 高层GUI和媒体I/O: 为程序界面添加滑动条 OpenCV的视频输入和相似度测量 用OpenCV创建视频

    为程序界面添加滑动条 在以前的教程中 (例如 linear blending 和 brightness and contrast adjustments)你有可能注意到需要 input 一些数值到我们 ...

  6. 【Python】写视频的2种常用方法:write_videofile和videoWrite

    一.使用Python自带的write_videofile 1.函数说明如下: def write_videofile(self, filename, fps=None, codec=None,bitr ...

  7. OpenCV进阶篇视频

    OpenCV进阶篇01 第14章 视频处理 OpenCV不仅能够处理图像,还能够处理视频.视频是由大量的图像构成的,这些图像以固定的时间间隔从视频中获取.这样,就能够使用图像处理的方法对这些图像进行处 ...

  8. 【opencv系列03】OpenCV4.X视频捕获与显示

    点击上方"AI搞事情"关注我们 一. 视频获取与显示 VideoCapture类实现视频获取,可以从摄像头或者文件进行视频读取.首先,创建一个VideoCapture对象,参数可以 ...

  9. 通过视频着色进行自监督跟踪

    正文字数:4004  阅读时长:8分钟 在本文中,我们将学习一种新颖的自监督目标跟踪方法.自我监督是模型自我学习的一种方法,这本身就使得这个话题非常有趣.在这里,我们将看到如何学会自己跟踪对象.我们将 ...

  10. 图像入门二之视频操作

    本节中,你将学习到读取视频,显示视频和保存视频. 学习从相机捕捉并显示它. 1.从相机读取视频 通常情况下,我们必须用摄像机捕捉实时画面.提供了一个非常简单的界面.让我们从摄像头捕捉一段视频(我使用的 ...

最新文章

  1. 正则表达式 – 语法
  2. 成功解决pillow模块内生成的非UTF-8格式(比如label中有汉字时)
  3. Optimized Purchasing基础知识
  4. 非root用户挂载NFS
  5. Windows上配置SSHKey到GItHub
  6. 初学Android,字符串,数字,尺寸,数组资源(十二)
  7. python cookbook 小结
  8. 吉利汽车发布澄清公告:并未与百度公司合作生产智能电动车
  9. java innerexception_java – 为什么使用反射访问外部类的私有成员抛出IllegalAccessException?...
  10. 无ide编译java_无IDE编译和运行java
  11. iOS 又出重大Bug!一秒搞崩 iPhone 的网络连接功能
  12. python之修改pip为豆瓣源
  13. IOS中常见UI细节和常识
  14. mysql创建视图注意事项_mysql视图创建注意事项(转)
  15. OSChina 周五乱弹 —— 闹钟一响就睡觉
  16. 基于友盟+U-APM解决客户小姐姐Android Native Crash问题,小姐姐说我真棒,要把她闺蜜介绍给我
  17. 细胞制备流程图_B细胞恶性肿瘤的CAR-T免疫治疗或可出现新进展
  18. S3C2440系统中断(转)
  19. 性能测试工具loucst使用(最新版本)
  20. PDF在线编辑器的实现

热门文章

  1. RGB888和RGB565互相转换
  2. Python-经验模态分解(EMD)分解及测试用例
  3. 手机长度px值_px和厘米怎么换算?
  4. 接入微信小程序统一服务消息
  5. Android 原生系统,手机rom下载网站
  6. 浦发银行 信息科技岗 大数据方向 面经
  7. 史上最简SLAM零基础解读(4) - 单应性Homography →公式推导与细节理解
  8. 史上最全 | 编程入门指南
  9. STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
  10. python教材分析_初中信息技术_初识Python教学设计学情分析教材分析课后反思