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

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

3天内不再提示

图像处理基础知识及OpenCV入门函数

jf_78858299 来源:抓码青年 作者:聊聊Python 2023-02-08 15:57 次阅读

一、图像基础知识

图像都是由像素(pixel)构成的,即图像中的小方格,这些小方格都有一个明确的位置和被分配的色彩数值,而这些一小方格的颜色和位置就决定该图像所呈现出来的样子。像素是图像中的最小单位,每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。

图像通常包括二值图像、灰度图像和彩色图像。

1、二值图像

二值图像中任何一个点非黑即白,要么为白色(像素为255),要么为黑色(像素为0)。将灰度图像转换为二值图像的过程,常通过依次遍历判断实现,如果像素>=127则设置为255,否则设置为0。

2.灰度图像

灰度图像除了黑和白,还有灰色,它把灰度划分为256个不同的颜色,图像看着也更为清晰。将彩色图像转换为灰度图是图像处理的最基本预处理操作,通常包括下面几种方法:(1) 浮点算法:Gray=R0.3+G0.59+B0.11(2) 整数方法:Gray=(R30+G59+B11)/100(3) 移位方法:Gray=(R28+G151+B77)>>8;(4) 平均值法:Gray=(R+G+B)/3;(此程序采用算法)(5) 仅取绿色:Gray=G;(6) 加权平均值算法:根据光的亮度特性,公式: R=G=B=R0.299+G*0.587+B0.144

通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。改变象素矩阵的RGB值,来达到彩色图转变为灰度图。

3.彩色图像

彩色图像是RGB图像,RGB表示红、绿、蓝三原色,计算机里所有颜色都是三原色不同比例组成的,即三色通道。

二.OpenCV读写图像

本文主要使用Python2.7和OpenCV进行讲解,首先调用"pip install opencv-python"安装OpenCV库,如下图所示:

1.读入图像OpenCV读图像主要调用下面函数实现:

img = cv2.imread(文件名,[,参数])参数(1) cv2.IMREAD_UNCHANGED (图像不可变)参数(2) cv2.IMREAD_GRAYSCALE (灰度图像)参数(3) cv2.IMREAD_COLOR (读入彩色图像)参数(4) cv2.COLOR_BGR2RGB (图像通道BGR转成RGB)

2.显示图像显示图像调用函数如下:

cv2.imshow(窗口名, 图像名)

3.窗口等待调用函数如下:

cv2.waitKey(delay)键盘绑定函数,共一个参数,表示等待毫秒数,将等待特定的几毫秒,看键盘是否有输入,返回值为ASCII值。如果其参数为0,则表示无限期的等待键盘输入;参数>0表示等待delay毫秒;参数<0表示等待键盘单击。

4.删除所有窗口调用函数如下:

cv2.destroyAllWindows() 删除所有窗口cv2.destroyWindows() 删除指定的窗口

5.写入图片调用函数如下:

retval = cv2.imwrite(文件地址, 文件名)

下面代码是读入图片并显示保存。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg")
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

输出结果如下图所示,并且在文件夹下保存了一张名为“testyxz.jpg”的图像。

图片

如果代码中没有watiKey(0)函数,则运行结果如下图所示:

图片

同时可以对代码进行升级,如下所示:

#无限期等待输入
k=cv2.waitKey(0)#如果输入ESC退出if k==27:
cv2.destroyAllWindows()

三.OpenCV像素处理

1.读取像素灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。

灰度图像:返回值 = 图像(位置参数)eg: test=img[88,42]彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]

2.修改图像修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。

灰度图像:img[88,142] = 255彩色图像:img[88,142, 0] = 255img[88,142, 1] = 255img[88,142, 2] = 255彩色图像:方法二img[88,142] = [255, 255, 255]

下面代码是获取像素及修改的操作。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
test = img[88,142]print test
img[88,142] = [255, 255, 255]print test
#分别获取BGR通道像素
blue = img[88,142,0]print blue
green = img[88,142,1]print green
red = img[88,142,2]print red
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)

输出结果如下所示:[158 107 64][255 255 255]255255255

下面代码是将行为100到200、列150到250的像素区域设置为白色。

# -*- coding:utf-8 -*-import cv2
#读取图片
img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED)
#该区域设置为白色
img[100:200, 150:250] = [255,255,255]
#显示图像
cv2.imshow("Demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图像
cv2.imwrite("testyxz.jpg", img)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    27

    文章

    1289

    浏览量

    56730
  • OpenCV
    +关注

    关注

    31

    文章

    635

    浏览量

    41343
收藏 人收藏

    评论

    相关推荐

    最新OpenCV专题出炉啦~最全OpenCV教程及各种图像处理、目标跟踪、识别案例

    OpenCV基础知识及应用领域设计,包含OpenCV教程、OpenCV识别、OpenCV跟踪及OpenC
    发表于 07-06 14:41

    Vivado HLS实现OpenCV图像处理的设计流程与分析

    本文通过对OpenCV图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV
    发表于 07-08 08:30

    HIFI耳机基础知识入门

    HIFI耳机基础知识入门 一、耳机是如何分类的? 1、按换能原理(Transducer)分
    发表于 02-02 11:48 3052次阅读

    OpenCV图像处理编程研究

    OpenCV是一种用于数字图像处理和计算机视觉的函数库,由Intel微处理器研究实验室的视觉交互组开发,采用的开发语言是C++。本文通过学习
    发表于 06-25 17:52 0次下载

    最全OpenCV教程及图像处理、目标跟踪、识别案例

    本专题主要帮助读者快速入门 OpenCV,而无需到处搜寻参考资料,为你免除大量自行搜索的时间,本专题主要给大家介绍OpenCV基础知识及应用领域设计,包含
    发表于 07-06 14:11
    最全<b class='flag-5'>OpenCV</b>教程及<b class='flag-5'>图像</b><b class='flag-5'>处理</b>、目标跟踪、识别案例

    ADC入门_基础知识

    ADC入门_基础知识对初学者有很好的帮助。希望大家会喜欢。
    发表于 03-11 17:41 45次下载

    使用opencv进行图像处理

    使用opencv进行图像处理_于仕琪,感兴趣的可以看看。
    发表于 05-03 14:45 0次下载

    形态学图像处理综合示例_《OpenCV3编程入门》书本配套源代码

    OpenCV3编程入门》书本配套源代码:形态学图像处理综合示例
    发表于 06-06 15:52 8次下载

    OpenCV3编程入门-源码例程全集-HoughLinesP函数

    OpenCV3编程入门-源码例程全集-HoughLinesP函数用法示例
    发表于 09-18 16:38 10次下载

    形态学图像处理综合示例_OpenCV3编程入门-源码例程

    OpenCV3编程入门-源码例程全集-形态学图像处理综合示例,感兴趣的小伙伴们可以瞧一瞧。
    发表于 09-18 16:55 0次下载

    什么是DCS系统?DCS系统基础知识入门

    什么是DCS系统?DCS系统基础知识入门
    的头像 发表于 12-02 11:14 4.6w次阅读
    什么是DCS系统?DCS系统<b class='flag-5'>基础知识</b><b class='flag-5'>入门</b>

    OpenCV入门教程之进行图像的保存详细概述

    本文档的主要内容详细介绍的是OpenCV入门教程之进行图像的保存详细概述。
    发表于 10-10 11:31 14次下载

    OpenCV函数图像处理目录说明

    本文档的主要内容详细介绍的是OpenCV函数图像处理目录说明。
    发表于 10-29 15:55 12次下载
    <b class='flag-5'>OpenCV</b><b class='flag-5'>函数</b><b class='flag-5'>图像</b><b class='flag-5'>处理</b>目录说明

    详解OpenCV入门知识图片预处理

    OpenCV是一个跨平台计算机视觉和机器学习算法库。它不仅能用来实现各种复杂的算法,还能够对图像进行预处理:包括图像的平移、旋转、缩放、翻转、裁剪。希望把这些
    的头像 发表于 04-14 14:46 2625次阅读

    图像处理基础知识 1

    我一直都在这里分享计算机基础知识,比如计算机组成原理、数据结构与算法、计算机网络和操作系统等。 不过偶尔我也想写一下其他的话题,今天就想和你聊聊图像处理的相关知识,因为工作中会用
    的头像 发表于 02-08 17:08 811次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>处理</b><b class='flag-5'>基础知识</b> 1