精华内容
下载资源
问答
  • opencv图像处理
    千次阅读
    2022-01-20 15:53:27

    图像处理基础

    numpy 访问图像

    Numpy.array库是Python处理图像的基础。

    在OpenCV中,通道的顺序是B→G→R

    在OpenCV中,最小的数据类型是无符号的8位数

    可以使用image[0,0]访问图像image第0行第0列位置上的像素点

    先行后列: img[行,列]

    使用Numpy库中的函数zeros()可以生成一个元素值都是0的数组,并可以直接使用数组的索引对其进行访问、修改。

    img=np.zeros((8,8), dtype=np.uint8)
    

    RGB模式的彩色图像在读入OpenCV内进行处理时,会按照行方向依次读取该RGB图像的B通道、G通道、R通道的像素点,并将像素点以行为单位存储在ndarray的列中。

    在OpenCV内以BGR模式的三维数组形式存储

    image-20220102195502140

    可以使用表达式访问数组内的值。

    例如,可以使用image[0,0,0]访问图像image的B通道内的第0行第0列上的像素点,式中:

    ● 第1个索引表示第0行。

    ● 第2个索引表示第0列。

    第3个索引表示第0个颜色通道。

    绿色通道值 : green[:, :,1]=255

    item()和itemset()

    使用numpy.array访问像素

    numpy.array提供了item()和itemset()函数来访问和修改像素值

    函数item()能够更加高效地访问图像的像素点,该函数的语法格式为:

    item(行,列)
    

    函数itemset()可以用来修改像素值,其语法格式为:

    itemset(索引值,新值)
    
    import cv2
    import numpy as np 
    
    //使用Numpy中的random.randint可以生成一个随机数组
    img = np.random.randint(10,99,size=[5,5],dtype=np.uint8)
    value = img.item(3,2)
    img.itemset((3,2),255)
    print(value)
    print(img)
    

    函数item()访问RGB模式图像的像素值时,其语法格式为:

    item(行,列,通道)
    

    函数itemset()修改(设置)RGB模式图像的像素值时,其语法格式为:

    itemset(三元组索引值,新值)
    

    需要注意,针对RGB图像的访问,必须同时指定行、列以及行列索引(通道),例如img.item(a, b, c)。

    仅仅指定行和列是不可以的。

    感兴趣区域

    ROI: Region of Interest, ROI

    将一个感兴趣区域A赋值给变量B后,可以将该变量B赋值给另外一个区域C,从而达到在区域C内复制区域A的目的。

    image-20220102195927681

    获取右侧的ROI: img[200:400,600:800] 先行后列

    通道操作

    Opencv中通道是按B->G->R的顺序存储的。

    通道拆分

    • 通过索引拆分
    b = img[ : , : , 0 ]
    g = img[ : , : , 1 ]
    r = img[ : , : , 2 ]
    
    • 通过函数拆分
    b, g, r=cv2.split(img)
        
    b=cv2.split(a)[0]
    g=cv2.split(a)[1]
    r=cv2.split(a)[2]
    

    通道合并

    bgr=cv2.merge([b, g, r])
    

    获取图像属性

    • shape

      如果是彩色图像,则返回包含行数、列数、通道数的数组

      如果是二值图像或者灰度图像,则仅返回行数和列数。

    • size

      返回图像的像素数目。其值为“行×列×通道数”,灰度图像或者二值图像的通道数为1。

    • dtype

      返回图像的数据类型

    print("图像的属性")
    print(img.shape)
    print(img.size)
    print(img.dtype)
    
    ----------------------
    图像的属性
    (5, 5)
    25
    uint8
    

    例子

    import cv2
    import numpy as np 
    
    img = np.random.randint(10,99,size=[5,5,3],dtype=np.uint8)
    value = img.item(3,2,0)
    img.itemset((3,2,0),255)
    
    print("-----------")
    print("img")
    print(img)
    
    print("-----------")
    print("split")
    b,g,r = cv2.split(img)
    print("b")
    print(b)
    print("g")
    print(g)
    print("r")
    print(r)
    print("-----------")
    print("merge")
    img_m = cv2.merge([b,g,r])
    print(img_m)
    print("-----------")
    
    print("图像的属性")
    print(img.shape)
    print(img.size)
    print(img.dtype)
    
    更多相关内容
  • 便捷式OpenCV图像处理工具,有形态学处理,滤波,图像增强,二值化,边缘检测,滤镜效果,图像检测,图像分割等
  • opencv 图像处理

    2018-12-06 21:24:35
    opencv 图像处理
  • 便捷式OpenCV图像处理工具 V2.4.zip 使用OpenCV开发的图像处理小工具,能够实现OpenCV的相应图像处理,比如形态学处理、滤波、图像增强、二值化、边缘检测、滤镜、图像检测、图像分割等功能都能实现,是一款便捷式...
  • OpenCV图像处理入门

    2021-06-20 19:49:24
    课程主要介绍了OpenCV的基础操作,通过学习本课程能够熟悉OpenCV的基本操作方法,为后续的人工智能学习打下坚实基础。
  • opencv图像处理常用完整示例代码总结分析
  • OpenCV图像处理.rar

    2020-03-29 22:09:18
    易语言编写的图像识别,基于OpenCV模块的图像处理软件,易语言编写的图像识别,基于OpenCV模块的图像处理软件
  • 使用OpenCV开发的图像处理小工具,能够实现OpenCV的相应图像处理,比如形态学处理、滤波、图像增强、二值化、边缘检测、滤镜、图像检测、图像分割等功能都能实现,是一款便捷式的图像处理工具。
  • OpenCV图像处理工具.exe

    2020-01-08 10:58:29
    opencv各种图像处理算法集成到一个软件界面里,有时候我们需要快速知道opencv各种算法处理后的结果是什么样子,如果编写代码或许毕竟麻烦,这个工具的目的是,让你快速通过操作界面,得到各种算法的处理结果。
  • OpenCV图像处理基础——基于C++实现版本视频培训课程概况:教程中会讲解到OpenCV的基础知识及使用方法,并基于OpenCV实现基础的图像处理算法;除此之外课程包含如下的内容: 图像颜色空间及类型转换及应用(BGR、...
  • openCV图像处理教程.zip

    2019-06-26 13:53:46
    里面有opencv图像处理方面的教程ppt以及源代码。
  • visual studio,MFC对图像进行简单的处理,滤波,灰度化等,遥感期末编程作业
  • 高清版的《opencv图像处理编程实例》,作者:朱伟,开发环境vs2015+opencv3.1,里面有详细的安装教程
  • OpenCV图像处理编程实例 高清PDF及源码 OpenCV图像处理编程实例》以OpenCV开源库为基础实现图像处理领域的很多通用算法,并结合当今图像处理领域前沿技术,对多个典型工程实例进行讲解及实现。全书内容覆盖面广,由...
  • OpenCV图像处理基本操作 Open_CV系列(一)

    万次阅读 多人点赞 2022-03-26 10:17:40
    欢迎大家前来学习OpenCV图像处理基本操作 - Open_CV系列博文 1.安装OpenCV-Contrib-Python库 2.读取图片文件像素值数组 3.显示图像 ①cv2.imshow() ②cv2.waitKey() ③cv.destoryAllWindows() 4. 保存图像 imwrite()...

    ʚʕ̯•͡˔•̯᷅ʔɞ
    🍹欢迎各路大佬来到小啾主页指点☀️欢迎大家前来学习OpenCV图像处理基本操作 - Open_CV系列博文,我是侯小啾。
    博客主页:云雀编程小窝 🌹꧔ꦿ
    🌹꧔ꦿ博文如有帮助,还请给个点赞 + 关注 + 收藏
                请添加图片描述
    如有疑问欢迎随时在评论区交流。☀️


    1.安装OpenCV-Contrib-Python库

    OpenCV-Contrib-Python除了包含我们使用的OpenCV相关功能外,还包含了Numpy。

    • 直接安装

    pip install opencv-contrib-python

    从清华镜像安装OpenCV-Contrib-Python库

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python

    2.读取图片文件像素值数组

    首先导入cv2模块
    导入命令如下:

    import cv2
    

    再就是,准备一张名为pic的图片放在同目录下,如下(忽略水印):

         在这里插入图片描述

    然后读取并打印像素的数组:

    image = cv2.imread("pic.jpg")
    print(image)
    

               在这里插入图片描述


    • 需要注意的是,如果指定路径,这里的路径中不能有中文,否则会读不到数据,产生警告。如下所示:
    # 读取图像,打印像素值数组
    image = cv2.imread("D:/中文/pic.jpg")
    print(image)
    

    在这里插入图片描述


    3.显示图像

    要将上边读取到的像素数组作为图像显示出来,需要以下三个方法结合使用:


    ①cv2.imshow()

    cv2.imshow(winname,mat)

    imshow方法用于显示图像,

    • 其中参数winname表示显示图像的窗口的名称,是一个字符串,且不能有中文。
    • ma参数t即 一个 像素数组对象。

    imshow()方法显示的图像窗口,会在程序运行结束时,或使用destoryAllWindows()手动将窗口销毁为止 停止显示。
    仅仅一个cv2.show()方法并不能满足我们对图像展示的需求。要想控制图像显示的时间,还需要使用到cv2.waitKet()和destoryAllWindows()方法。


    ②cv2.waitKey()

    cv2.waitKey(delay)

    waitKey()用于控制图像显示的时间。

    • 参数delay是一个数值,指延迟的时间。单位为毫秒。在这个时间内如果键盘被点击,则计时结束。否则就等到时间满足。
      如果delay为0,则无限期地等待。直到键盘按键事件发生为止。

    • 官方的解释:
      函数waitKey无限期地等待一个key事件,或者等待dela毫秒,当它为正时。由于操作系统在切换线程之间有一个最小的时间间隔,该函数不会完全延迟毫秒,它将至少延迟毫秒,这取决于当时计算机上运行的其他程序。它返回按键的代码,如果在指定时间之前没有按键,则返回-1。要检查按键但不等待,请使用pollKey。

    关于waitKey()与time.sleep()都有延时功能,
    经过测试可以发现在这里使用time.sleep()的话,显示的只是窗口,而无图像。使用waitKet()才能显示图像。


    ③cv.destoryAllWindows()

    cv.destoryAllWindows()
    cv.destoryAllWindows()用于关闭当前程序显示的所有窗口。(当然,不包括咱的pycharm窗口)


    import cv2
    
    image = cv2.imread("pic.jpg") 
    cv2.imshow("cat", image)  # 窗口名为“cat”
    cv2.waitKey(10000)  # 延迟10000毫秒(1秒=1000毫秒。也即10秒)
    cv2.destroyAllWindows()  # 销毁窗口
    

         在这里插入图片描述
    如果没有cv2.destroyAllWindows()窗口销毁命令,窗口似乎也会自动销毁。
    这是因为没有该命令是,则窗口会在程序运行结束时自动销毁。
    在这个例子中感觉不到细微差别,cv2.destroyAllWindows()显得可有可无。
    如果把cv2.destroyAllWindows()去掉,换为time.sleep(),则窗口会在显示cv2.waitKey(10000)的10秒后,继续等待后续程序time.sleep()执行完毕(10秒),总计约20秒。这样就便于理解cv2.destroyAllWindows()的意义了。


    4. 保存图像 imwrite()

    OpenCV提供了专门的图像保存方法imwrite()

    imwrite(filename,img)

    • filename为保存文件目录
    • img为像 素数组对象
    import cv2
    image = cv2.imread("pic.jpg")  
    cv2.imwrite("new_pic.jpg", image)
    

    保存成功,执行结果可自行测试。


    5.获取图像的属性

    获取图像的属性,没有专门的方法,其实也就是查看像素数组的属性(即numpy数组的属性)。

    只是当其应用于表示像素时,其具有了超出数组本身的意义。

    常用的有

    • shape,彩色图像的数组是一个三维数组,可以表示为(a,b,3)。a表示竖直方向上的像素通道数量(垂直像素),b表示水平方向上的像素通道数量(水平像素),3表示每个像素有三个色彩通道。
      灰度图像的像素数组是一个二维数组(a,b),a表示垂直像素,b表示水平像素。灰度图像的每个像素有一个色彩通道。
    • size,表示图片具有的色彩通道个数。
      对彩色图像,像素数量为a×b,色彩通道个数为a×b×3。
      对灰度图像,像素数量和色彩通道数都为a×b。
    • dtype,图像数据类型,为unit类型(非负类型)。

    查看彩色图像的属性:

    import cv2
    
    image = cv2.imread("pic.jpg")
    print("shape =", image.shape)
    print("size =", image.size)
    print("dtype =", image.dtype)
    

    在这里插入图片描述
    如图,可以看出是一个shape为(700,700,3)的三维数组。


    查看灰度图像的属性

    image = cv2.imread("pic.jpg", 0)
    print("shape =", image.shape)
    print("size =", image.size)
    print("dtype =", image.dtype)
    

    在这里插入图片描述
    如图,可以看出是一个shape为(700,700)的二维数组。


    本次分享就到这里,感谢大家的支持!


    🌹꧔ꦿ本系列blog传送门:

    OpenCV图像处理基本操作 【Python-Open_CV系列(一)】

    OpenCV像素处理基本操作 【Python-Open_CV系列(二)】

    OpenCV之 BGR、GRAY、HSV色彩空间&色彩通道专题 【Python-Open_CV系列(三)】

    OpenCV绘制图像与文字(可作为脚手架代码)(python) 【Python-Open_CV系列(四)】

    OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】

    基于梵·高《向日葵》的 图像阈值处理专题(二值处理、反二值处理、截断处理、自适应处理及Otsu方法)【Python-Open_CV系列(六)】

    OpenCV基本功 之 图像的掩模、运算 & 合并专题 -小啾带学【Python-Open_CV系列(七)】

    《三英战吕布》 - 图像模板匹配 【Python-Open_CV系列(八)】

    OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)

    Open_CV形态学运算专题 (腐蚀&膨胀、开&闭运算、梯度运算、顶帽运算黑帽运算 )【Python-Open_CV系列(十)】

    霍夫变换看不懂?小啾带你串一遍:OpenCV图形检测专题 这样学最简单【Python-Open_CV系列(十一)】

    小啾带你开天眼 之 开启py-OpenCV摄像头及视频处理【Python-Open_CV系列(十二)】

    小啾带你开天眼 之 人脸检测与识别(以及华强、皇叔、高祖配墨镜特效)【Python-Open_CV系列(十三)】

    展开全文
  • Intel 图像处理库手册。OpenCV很好的参考资料。包含图像结构,错误处理,图像处理算法等内容。
  • 利用opencv对遥感图像进行处理实现遥感图像的初步处理
  • OpenCV图像处理——opencv简介(一)

    千次阅读 2022-03-20 11:54:28
    OpenCV图像处理 文章目录OpenCV图像处理前言一、OpenCV是什么?二、OpenCV-python开发三、开发环境总结 前言 酷爱图像处理,但是并没有系统的学习过opencv,只是用什么学什么,趁着封校这段时间终于可以系统的学习...

    OpenCV图像处理

    在这里插入图片描述

    前言

    酷爱图像处理,但是并没有系统的学习过opencv,只是用什么学什么,趁着封校这段时间终于可以系统的学习一下opencv了,肉眼可见的是最提起人兴趣的。ROS有亿点点难,先学学opencv。

    一、OpenCV是什么?

    OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立,第一个版本于 2000 年问世。Vadim Pisarevsky 加入了 Gary Bradsky,负责管理英特尔的俄罗斯软件 OpenCV 团队。2005 年,OpenCV 被用于 Stanley ,这辆车赢得了 2005 年美国穿越沙漠 DARPA 机器人挑战大赛。后来,在 Willow Garage 的支持下,在 Gary Bradsky 和 Vadim Pisarevsky 主导下,OpenCV 项目的开发工作变得活跃起来。OpenCV 现在支持与计算机视觉和机器学习相关的众多算法,并且每天都在拓展中。

    OpenCV 支持各种编程语言,如 C++,Python,Java 等,可在不同的平台上使用,包括 Windows,Linux,OS X,Android 和 iOS。基于 CUDA 和 OpenCL 的高速 GPU 操作接口也在积极开发中。
    在这里插入图片描述

    二、OpenCV-python开发

    OpenCV-Python 是 OpenCV 的 Python API,结合了 OpenCV C++ API 和 Python 语言的最佳特性。OpenCV-Python 是一个 Python 绑定库,旨在解决计算机视觉问题。

    Python 是一种由 Guido van Rossum 开发的通用编程语言,它很快就变得非常流行,主要是因为它的简单性和代码可读性。它使程序员能够用更少的代码表达思想,而不会降低可读性。

    与 C/C++ 这类语言相比,Python 的速度更慢。好在,可以使用 C/C++ 轻松的拓展 Python ,我们可以在 C/C++ 中编写计算密集型代码,并用 Python 来封装。这给我们带来了两个好处:首先,代码像原始的 C/C++ 代码一样快(因为后台实际上就是 C/C++ 代码在工作),其次,在 Python 中编写代码比在 C/C++ 中更容易。OpenCV-Python 就是 OpenCV C++ 的 Python 封装。

    OpenCV-Python 使用了 Numpy,这是一个有着 MATLAB 风格语法,高度优化的用于数值计算的库。所有 OpenCV 数组结构都与 Numpy 数组进行转换。这也使得与使用 Numpy 的其他库(如 SciPy 和 Matplotlib)集成更容易。
    在这里插入图片描述

    三、开发环境

    开发软件使用的是pycharm
    在终端输入pip list查看有没有opencv的包,如果没有使用pip install 指令进行安装
    在这里插入图片描述

    总结

    计算机视觉市场巨大而且持续增长依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。

    展开全文
  • 便捷式OpenCV图像处理工具.zip----可借助此工具验证opencv图像处理时候的相关阈值选择与效果预览
  • 摄像头采集、图像、以及各种算法。运动模板检测(摄像头)
  • opencv图像处理中常用函数汇总,包括显示图像,保存图像,图像灰度化,边缘检测等函数使用方式
  • OpenCV图像处理基础操作汇总

    千次阅读 2021-12-26 16:14:15
    1、使用opencv读写图像 OpenCV支持jpg、png、tif等格式图像读取。 import cv2 import matplotlib.pyplot as plt path = ‘lena.jpg’ img = cv2.imread(path) cv2.imwrite(‘lena1.jpg’, img) 2、BGR转RGB ...

    1、使用opencv读写图像

    OpenCV支持jpg、png、tif等格式图像读取。

    import cv2
    
    import matplotlib.pyplot as plt
    
    path = ‘lena.jpg’
    
    img = cv2.imread(path)
    
    cv2.imwrite(‘lena1.jpg’, img)

    2、BGR转RGB

    opencv是按照bgr方式读取图像,而plt按照rgb格式显示图像,因此会出现显示异常。为了正常显示,需要进行顺序转换,由BGR转为RGB。

    使用opencv:

    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    使用矩阵操作:

    img = img[:, :, ::-1]

    import cv2
    import matplotlib.pyplot as plt
    import numpy
    path = 'lena.jpg'
    img = cv2.imread(path)
    img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    plt.imshow(img)
    plt.show()

    3、获取图像宽高

    height, width = img.shape[:2]

    或者

    img_shape = img.shape

    height = img_shape[0]

    width = img_shape[1]

    4、调整图像尺寸

    cv2.resize(img, (height, width), cv2.INTER_LINEAR)

    第一个参数为原始图像,第二个为调整后尺寸,第三个为插值算法设置,INTER_NEAREST、INTER_LINEAR、INTER_CUBIC分别为最邻近插值、双线性插值、双三次插值。

    import cv2
    import matplotlib.pyplot as plt
    import numpy
    path = 'lena.jpg'
    img = cv2.imread(path)
    img = cv2.cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img = cv2.resize(img, (300, 200), cv2.INTER_LINEAR)
    plt.imshow(img)
    plt.show()

    5、将图像转换为python字节

    import cv2
    
    path = 'lena.jpg'
    
    img = cv2.imread(path)
    
    byteArray = bytearray(img)
    
    print(byteArray)

    6、将图像一部分区域拷贝到另一部分。

    import cv2
    
    import matplotlib.pyplot as plt
    
    path = 'lena.jpg'
    
    img = cv2.imread(path)
    
    img = img[:, :, ::-1]
    
    image_block = img[0:100, 0:100]
    
    img[200:300,200:300] = image_block
    
    plt.imshow(img)
    
    plt.show()

     

    7、使用canny提取边缘

    import cv2
    
    import matplotlib.pyplot as plt
    
    path = 'lena.jpg'
    
    img = cv2.imread(path)
    
    img = cv2.Canny(img, 100, 150)
    
    plt.imshow(img)
    
    plt.show()

     

    8、在图像上绘制矩形框

    cv2.rectangle(img, (350, 120), (470, 520), (0, 255, 0), 2)

    第一个参数为原图,第二和第三个参数为图像左上角和右下角坐标,第四个参数为线框颜色,第五个参数为线宽。

    import cv2
    
    import matplotlib.pyplot as plt
    
    import numpy
    
    path = 'person.jpg'
    
    img = cv2.imread(path)
    
    img = cv2.rectangle(img, (350, 120), (470, 520), (0, 255, 0), 2)
    
    plt.imshow(img)
    
    plt.show()

    9、镜像变换

    水平镜像:img = cv2.flip(img,1,dst=None)

    垂直镜像:img = cv2.flip(img,0,dst=None)

    对角镜像:img = cv2.flip(img,-1,dst=None)

    10、图像滤波

    均值滤波:dst = cv2.blur(img, [5, 5])

    中值滤波:dst = cv2.medianBlur(img, 7)

    双边滤波:dst = cv2.bilateralFilter(img, 10, 30, 30)

    11、图像添加文字

    cv2.putText(img, text, (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 255, 0), 2,)

    参数说明:原始图像,文字,坐标(左上角),字体,字体大小、颜色、字体线条粗细

    展开全文
  • 该资源是基于OpenCV3.0版本且以C++语言为接口,是OpenCV入门学习的必备资源。课程里面包含详细的实现代码更易于OpenCV的理解和学习亲测很实用
  • 总结的OPENCV图像处理程序汇总
  • OpenCV在MFC中的使用的一个示例,基本图像处理功能都有
  • OPENCV的例程,使用OPENCV进行图形图像处理和视频处理,包括图像结构,边缘检测,背景建模等模块
  • 本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的、不同方法的处理,以达到对图像进行去噪、锐化等一系列的操作。...
  • 基于OpenCV图像处理的智能小车户外寻迹算法的设计.pdf基于OpenCV图像处理的智能小车户外寻迹算法的设计.pdf基于OpenCV图像处理的智能小车户外寻迹算法的设计.pdf基于OpenCV图像处理的智能小车户外寻迹算法的设计.pdf...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,581
精华内容 48,632
关键字:

opencv图像处理

友情链接: 01-JavaScript基础.zip