0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV的基本操作

深度学习自然语言处理 来源:深度学习自然语言处理 作者:云时之间 2020-11-02 15:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天这一篇文章主要记录一下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()

责任编辑:xj

原文标题:【CV学习笔记】OpenCV基本操作

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CV
    CV
    +关注

    关注

    0

    文章

    54

    浏览量

    17472
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73136
  • OpenCV
    +关注

    关注

    33

    文章

    651

    浏览量

    44408

原文标题:【CV学习笔记】OpenCV基本操作

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    机器视觉双雄YOLO 和 OpenCV 到底有啥区别?别再傻傻分不清!

    很多人一听到 “YOLO”和“OpenCV” ,总以为它们是同一种东西。其实, 一个是AI算法,一个是视觉工具库;一个会“识别”,一个会“处理” 。本文带你深入了解两者的核心区别与协同关系,以及它们
    的头像 发表于 10-14 16:00 534次阅读
    机器视觉双雄YOLO 和 <b class='flag-5'>OpenCV</b> 到底有啥区别?别再傻傻分不清!

    零成本钢铁侠手套!树莓派+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-16 16:16 882次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒变手势遥控器!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-14 17:45 957次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b>实现面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-13 17:44 969次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b>实现姿态估计和面部特征点追踪?

    【GM-3568JHF开发板免费体验】OpenCV开发环境安装和计数程序开发

    、 Android 等系统上运行,并通过Python接口简化操作。 sudo apt install libopencv-dev python3-opencv 四、OpenCV图像识别测试 使用python3
    发表于 08-09 13:30

    如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的板端编译OpenCV及环境搭建方案的开发测试。摘自优秀创作者-短笛君 RK3576具有如下配置: 4
    发表于 08-08 17:14

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测、OpenCV测试

    OpenCV 常用的功能,如读写图片,处理,矩阵操作等等,版本与上游同步,无第三方依赖。在绝大多数情况下,以 1/10 的体积替换官方 OpenCV,适合对体积有要求的嵌入式环境。 准备工作 下载当前
    发表于 07-11 13:48

    编译opencv_camera_test找不到opencv.hpp怎么解决?

    1.取消makefile中的注释 2.在k230_sdk目录下进入docker环境后使用make mpp-apps编译 期待结果和实际结果 期待得到opencv_camera_test.elf文件
    发表于 06-23 06:14

    如何在k230上运行OpenCV的代码?

    如何在k230上运行OpenCV的代码
    发表于 06-17 06:06

    如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

    本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXPi.MX93开发板)的基于OpenCV的人脸检测方案测试。OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置
    的头像 发表于 04-15 11:51 640次阅读
    如何用<b class='flag-5'>OpenCV</b>的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板

    OpenCV行人检测应用方案--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV行人检测方案测试。摘自优秀创作者-小火苗一、软件环境安装1.安装
    的头像 发表于 04-10 08:03 1099次阅读
    <b class='flag-5'>OpenCV</b>行人检测应用方案--基于米尔全志T527开发板

    为LSDK构建opencv时遇到的问题求解

    我正在尝试使用 flex-builder 来运行 bld -c opencv -r ubuntu:桌面 我想要最新版本的 OpenCV。在我的 sdk.yml 文件中,我将 opencv
    发表于 03-26 08:26

    使用OpenCV保存从摄像头捕获的视频时更改颜色输出视频收到警告怎么解决?

    保存了从配备 OpenCV* 的摄像头捕获的视频。 生成更改的颜色输出视频。 收到警告:[ INFO:0] global .。/opencv/modules/core/src/utils
    发表于 03-05 07:20

    如何用OpenCV进行手势识别--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。摘自优秀创作者-小火苗米尔基于全志T527开发板一、软件环境安装1.安装OpenCVsudoapt-getinstalllibopencv-devpython3-openc
    的头像 发表于 12-13 08:04 1762次阅读
    如何用<b class='flag-5'>OpenCV</b>进行手势识别--基于米尔全志T527开发板

    【AI实战项目】基于OpenCV的“颜色识别项目”完整操作过程

    OpenCV是一个广受欢迎且极为流行的计算机视觉库,它因其强大的功能、灵活性和开源特性而在开发者和研究者中备受青睐。学习OpenCV主要就是学习里面的计算机视觉算法。要学习这些算法的原理,知道它们
    的头像 发表于 12-09 16:42 1893次阅读
    【AI实战项目】基于<b class='flag-5'>OpenCV</b>的“颜色识别项目”完整<b class='flag-5'>操作</b>过程