作者:云时之间

链接: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 cv
import numpy as npdef 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-pvcv.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*127cv.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()

每天进步一丢丢

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

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

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

今天因为你的点赞,让我元气满满

【CV学习笔记】OpenCV基本操作相关推荐

  1. y空间兑换代码_【CV学习笔记】色彩空间

    关注"深度学习冲鸭",一起学习一起冲鸭! 设为星标,第一时间获取更多干货 作者:云时之间来源:知乎链接:https://zhuanlan.zhihu.com/p/103387082 ...

  2. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  3. CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)

    BP神经网络训练实例 1. BP神经网络 关于BP神经网络在我的上一篇博客<CV学习笔记-推理和训练>中已有介绍,在此不做赘述.本篇中涉及的一些关于BP神经网络的概念与基础知识均在< ...

  4. cv学习笔记(3)神经网络数学原理

    cv学习笔记(3)神经网络数学原理 根据一个神经网络例子来介绍 输入是年龄.收入.性别,输出是买车和不买车的概率.该神经网络包含一个输入层.一个隐含层.一个输出层,每个节点和下一层的所有节点都有连接, ...

  5. Linux学习笔记之基本操作汇总

    Linux学习笔记之基本操作汇总 图片放大了再看才清楚!!!! Linux cd ocd / root package ocd /user ocd -/ ocd ~ home ocd - ls ...

  6. Opencv学习笔记 - OpenCV 4机器学习算法简介

    在机器学习中,一些比较流行方法的包括:支持向量机(SVM).人工神经网络(ANN).聚类.k-最近邻.决策树和深度学习.OpenCV支持并实现几乎所有这些方法,并有详细的文档说明(包含在Main mo ...

  7. 【CV学习笔记】图像预处理warpaffine-cuda加速

    1.前言 在上个学习笔记中学习warpaffine,并且在opencv下面实现了图像的预处理,而warpaffine可以很好的利用cuda加速来实现,于是基于手写AI的项目,又学习了warpaffie ...

  8. 肝货满满!CV学习笔记:入坑必备

    知乎:云时之间 链接:https://zhuanlan.zhihu.com/p/102044405 编辑:王萌 作者的话 最近因为一些原因被安排去做关于目标跟踪的一些工作,对我来说可谓是一个很大的挑战 ...

  9. CV学习笔记-数字图像概述

    数字图像 1. 图像 像素: 像素是分辨率的单位.像素是构成位图图像的基本单元,每个像素都有自己的颜色. 分辨率: 又称"解析度",图像的分辨率就是单位英寸内的像素点数.单位是PP ...

  10. CV学习笔记-浅述CV方向

    浅述CV方向 一.浅述人工智能的一些术语 1. 人工智能初探 人工智能是通过机器来模拟人类认知能力的技术 人工智能最核心的能力就是根据给定的输入做出判断或预测 关键时间节点:1956年,达特茅斯会议, ...

最新文章

  1. spring常用的三种依赖注入方式
  2. 逻辑模型设计步骤-粒度层次划分
  3. 一、Windows Server 2016 AD服务器搭建
  4. 微信PaxosStore:深入浅出Paxos算法协议
  5. 大数据架构中使用JSON-RPC好,还是RESTful API好?
  6. JS展示预览PDF。
  7. 必须使用301重定向的运用场景
  8. valueOf()和toString()详解
  9. Linux学习13-CentOS安装ab做压力测试
  10. C语言练习题~分数求和
  11. win10电脑360调用不到JAVA,win10系统打不开360浏览器快捷方式的修复步骤
  12. EOS在ubuntu16.04搭建私有链(二)
  13. IT界最短的笑话:上中台!
  14. win10修改用户名_大神帮您win10系统用户文件夹改名的修复方法
  15. 【Godot 插件】获取编辑器上所有的节点
  16. 《工程测量学》考试复习总结
  17. ☆苹果MAC OS X ★ 安装双系统☆
  18. DOSBOX + MASM
  19. 面试成功一个公司,微信上HR和我谈好了薪资和入职日期。却不发offer。这种企业值得去吗?
  20. android 调用系统打印

热门文章

  1. nuget包循环引用问题
  2. javascript总结48:正则表达式(RegExp)
  3. 区间DP HDU 2476
  4. 当我在linux图形界面终端输入startx,我在干什么
  5. 我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)
  6. 写了一个对象集合排序的类
  7. 【vue】--利用vue-cli--搭建项目------1912--(另一个种)
  8. iOS学习笔记之正则表达式
  9. JS 将图片编码BASE64
  10. less知识点总结(一)