【CV学习笔记】OpenCV基本操作

2020 年 10 月 28 日 深度学习自然语言处理


作者:云时之间
链接:https://zhuanlan.zhihu.com/p/102322268
编辑:王萌


今天这一篇文章主要记录一下OpenCV中一些基本的操作,包括读取图片,视频以及反转图像的几种操作:


  一:图片的载入


图片载入很常用,很实用。。。



  二:读取视频


读取视频分为从摄像头中读入和从硬盘中读入,如果是摄像头就在videocapture函数中填写数值,0是默认的第一个摄像头,1.是第二个,以此类推,如果没有外置摄像头,就直接“”填写路径就行。



  三:打印图片的类型


图片的信息主要包括图片的类型,图片的尺寸,图片的长宽高以及通道数,如果是彩色图片通道数就是3,如果是黑白的图片通道数为1。


我这里定义了一个函数来输出图片的信息:


这里可以看到:



图片的大小是589*646的彩色3通道图片,编码方式是uint8.


  四:图像的对比度转换


我们知道图像的像素数是从0-255,如果实现图像的反转只需要遍历每个像素然后每个像素减去255即可,这里用一个笨方法实现以下:



得出的结果是这样:



似乎转换了以后的图片还挺好看的。


当然,这样的方法太过于复杂,并且执行时间,效率都很低:


用时长达4555毫秒。。。


这时候我们使用OpenCV自带的bitwise_not函数:



因为底层是使用的C++语言进行封装,所以执行快得多,来对比下:



同样的一张图只需要17ms,舒服多了。


  五:时间消耗的计算


上图中的测试时间的计算用到了两个函数:


GetTickcount函数:它返回从操作系统启动到当前所经历的计时周期数

GetTickFrequency函数:返回每秒的计时周期数


使用的方法:


t1 = cv.getTickCount()

#你需要的测试的函数或代码

t2 = cv.getTickCount()

time = (t2-t1)/cv.getTickFrequency()
print("time:%s ms"%(time*1000))


最后,附上完整代码,方便大家复现,下一篇文章就要开始学习图像色彩空间的转换,还需努力。如果有任何问题欢迎在底下评论,我们一起交流,一起加油!


import cv2 as cvimport numpy as np
def access_pixel(image):#属性的读取 print(image.shape) height = image.shape[0] width = image.shape[1] channels = image.shape[2] print("width: %s, height: %s, channels: %s"%(width,height,channels)) #遍历每一个像素点,太慢了,更新 for row in range(height): for col in range(width): for c in range(channels): pv = image[row,col,c] image[row,col,c] = 255-pv cv.imshow("numpy_test",image)
def inverse(img): dis = cv.bitwise_not(img) cv.imshow("inverse",dis)
def create_image(): ''' img = np.zeros([400,400,4],np.uint8) img[ :, :,0] = np.ones([400,400])*255 #对通道进行赋值,0是蓝通道,1是绿通道,2是红色通道,多通道 cv.imshow("new_image",img) ''' #初始化灰度图像 img2 = np.zeros([400,400,1],np.uint8) img2[:,:,0] = np.ones([400,400])*127 #img2 = img2*127 cv.imshow("new_image_2",img2)
#维度变换 m1 = np.ones([3,3],np.uint8) m1.fill(12222.388) print(m1)
m2 = m1.reshape([1,9]) print(m2)
print("---------HELLO-----PYTHON--------------------")src = cv.imread("D:/1.png")cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)cv.imshow("input image",src)t1 = cv.getTickCount()#access_pixel(src)#create_image()inverse(src)t2 = cv.getTickCount()#测试时间消耗time = (t2-t1)/cv.getTickFrequency()print("time:%s ms"%(time*1000))cv.waitKey(0)cv.destroyAllWindows()



每天进步一丢丢


设计自组织映射神经网络并设定网络训练参数——设计输出层节点的排列

输出层的节点排列成哪种形式取决于实际应用的需要,排列形式应尽量直观地反映出实际问题的物理意义。例如,对于一般的分类问题,一个输出节点能代表一个模式类,用一维线阵既结构简单又意义明确;对于颜色空间或者旅行路径类的问题,二维平面则比较直观。

预告:设计自组织映射神经网络并设定网络训练参数——初始化权值




今天因为你的点赞,让我元气满满
登录查看更多
0

相关内容

一个跨平台的计算机视觉处理库,全称是Open Source Computer Vision。
专知会员服务
52+阅读 · 2020年12月24日
专知会员服务
118+阅读 · 2020年7月22日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
224+阅读 · 2020年4月11日
【CVPR2020】L2 ^GCN:图卷积网络的分层学习高效训练
专知会员服务
37+阅读 · 2020年3月31日
【强化学习】深度强化学习初学者指南
专知会员服务
180+阅读 · 2019年12月14日
深度学习「CV」学习实践指南!
专知
10+阅读 · 2020年6月21日
OpenCV研习社-系统化带学OpenCV4
计算机视觉life
5+阅读 · 2019年6月12日
OpenCV4系统化学习路线图与教程
计算机视觉战队
18+阅读 · 2019年3月29日
OpenCV 4 系统化学习路线图与教程
计算机视觉life
20+阅读 · 2019年3月24日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
实战 | 用Python做图像处理(一)
七月在线实验室
25+阅读 · 2018年5月23日
Arxiv
0+阅读 · 2021年2月4日
Arxiv
0+阅读 · 2021年2月2日
Doubly Attentive Transformer Machine Translation
Arxiv
4+阅读 · 2018年7月30日
Arxiv
6+阅读 · 2018年5月22日
VIP会员
相关VIP内容
专知会员服务
52+阅读 · 2020年12月24日
专知会员服务
118+阅读 · 2020年7月22日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
一份简短《图神经网络GNN》笔记,入门小册
专知会员服务
224+阅读 · 2020年4月11日
【CVPR2020】L2 ^GCN:图卷积网络的分层学习高效训练
专知会员服务
37+阅读 · 2020年3月31日
【强化学习】深度强化学习初学者指南
专知会员服务
180+阅读 · 2019年12月14日
相关资讯
深度学习「CV」学习实践指南!
专知
10+阅读 · 2020年6月21日
OpenCV研习社-系统化带学OpenCV4
计算机视觉life
5+阅读 · 2019年6月12日
OpenCV4系统化学习路线图与教程
计算机视觉战队
18+阅读 · 2019年3月29日
OpenCV 4 系统化学习路线图与教程
计算机视觉life
20+阅读 · 2019年3月24日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
实战 | 用Python做图像处理(一)
七月在线实验室
25+阅读 · 2018年5月23日
Top
微信扫码咨询专知VIP会员