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

    文章

    52

    浏览量

    16848
  • 代码
    +关注

    关注

    30

    文章

    4734

    浏览量

    68296
  • OpenCV
    +关注

    关注

    29

    文章

    626

    浏览量

    41229

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

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

收藏 人收藏

    评论

    相关推荐

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

    功能,首先要进行人脸检测,判断出图片中人脸的位置,才能进行下一步的操作OpenCV人脸检测方法 在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用得最多
    发表于 11-15 17:58

    【龙芯2K0300蜂鸟板试用】5 搭建opencv开发环境

    在官方提供的buildroot根文件系统中,不支持opencv库,故需要自己增加,另外,在本地编译的时候,需要在本地(ubuntu)上安装对应opencv库,这样才能将编译好的镜像放到板子上跑起来
    发表于 08-27 15:08

    OpenCV图像识别C++代码

    安装OpenCV库 首先,您需要在您的计算机上安装OpenCV库。您可以从OpenCV官网下载预编译的库或从源代码编译。安装完成后,确保将OpenCV的头文件和库文件添加到您的项目中。
    的头像 发表于 07-16 10:42 1694次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV
    的头像 发表于 07-16 10:38 930次阅读

    opencv的主要功能有哪些

    OpenCV提供了丰富的图像处理功能,包括图像的读取、显示、保存、转换等。此外,OpenCV还支持图像的滤波、边缘检测、形态学操作、图像金字塔等高级图像处理技术。 特征检测与描述:OpenC
    的头像 发表于 07-16 10:35 1302次阅读

    基于OpenCV的人脸识别系统设计

    基于OpenCV的人脸识别系统是一个复杂但功能强大的系统,广泛应用于安全监控、人机交互、智能家居等多个领域。下面将详细介绍基于OpenCV的人脸识别系统的基本原理、实现步骤,并附上具体的代码示例。
    的头像 发表于 07-11 15:37 1.1w次阅读

    嵌入式学习-飞凌ElfBoard ELF 1板卡 - 如何在Ubuntu中编译OpenCV

    在之前发布的文章中探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在 Ubuntu 环境下将 OpenCV 编译为 X86 架构可能更加方便和高效。 通过在主机上编译并
    发表于 06-07 09:21

    ELF 1技术贴|如何在Ubuntu中编译OpenCV

    在之前发布的文章中探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在Ubuntu环境下将OpenCV编译为X86架构可能更加方便和高效。通过在主机上编译并使用X86架构
    的头像 发表于 05-31 16:41 1123次阅读
    ELF 1技术贴|如何在Ubuntu中编译<b class='flag-5'>OpenCV</b>库

    如何实现PIL和OpenCV之间图像数据的转换呢?

    PIL图像数据格式转换成OpenCV图像数据格式
    的头像 发表于 02-25 13:43 1139次阅读

    ELF 1技术贴|如何移植OpenCV

    OpenCV是一个基于BSD许可(开源)发行的计算机视觉库,广泛应用于跨平台环境,包括Linux、Windows、Android及MacOS操作系统。作为计算机视觉领域广受欢迎的标准工具包
    的头像 发表于 01-09 13:55 346次阅读
    ELF 1技术贴|如何移植<b class='flag-5'>OpenCV</b>

    【米尔-全志T113-i开发板试用】基础开发环境配置和opencv-mobile移植测试

    opencv源码,来最小化编译的 opencv 库 提供了 opencv 常用的功能,如读写图片,处理,矩阵操作等等 版本与上游同步,无第三方依赖 在绝大多数情况下,以 1/10 的体
    发表于 12-27 20:04

    【米尔-TIAM62开发板-接替335x-试用评测】OPENCV和NCNN交叉编译

    目录 1. 前言 2. OPENCV交叉编译 3. NCNN交叉编译 4. OPENCV和NCNN移植 1. 前言 介绍了OpenCV和NCNN库的交叉编译过程,并在TIAM62开发板上部
    发表于 12-16 23:16

    OpenCV4.8 CUDA编程代码教程

    OpenCV4支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下。
    的头像 发表于 12-05 09:56 969次阅读
    <b class='flag-5'>OpenCV</b>4.8 CUDA编程代码教程

    OpenCV4.8+CUDA+扩展模块支持编译指南

    OpenCV4.8+CUDA+扩展模块支持编译指南
    的头像 发表于 11-30 16:45 903次阅读
    <b class='flag-5'>OpenCV</b>4.8+CUDA+扩展模块支持编译指南

    OpenCV对openEuler提供上游原生支持

    2023年11月17日,OpenCV社区正式接纳openEuler作为持续集成(Continuous Integration,CI)系统的操作系统之一,对openEuler提供上游原生支持
    的头像 发表于 11-20 09:14 806次阅读