一、数字图像处理基础以及OpenCv简单函数运用

图像基础知识

图像都是由像素构成的,就像图像中的一些小方格,这些小方格就像一个明确的位置分配了一定的数值,而这片区域中每一个小格子的位置和代表的数值就可以决定这幅图像所呈现的样子。像素就是图像中最小的单位。一个点阵图像中包含了一定数量的像素,这些像素决定的图像在屏幕呈现。一、数字图像处理基础以及OpenCv简单函数运用

图像常包括二值图像、灰度图像、彩色图像,我们最常用的就是用lena图像来展示,如下图:一、数字图像处理基础以及OpenCv简单函数运用

此图像自左向右依次为二值图像、灰度图像和彩色图像
1.    二值图像
二值图像中任何一个点非黑即白,要么像素是255的白色要么伟像素值0的黑色
2.    灰度图像
灰度图像除了黑、白还有灰色,下面介绍彩色图像转灰度图像的几种操作
1)    浮点运算:Gray = R*0.299 + G*0.587 + B*0.114
2)    整数运算:Gray = (R*299 + G*587 + B*114 + 500) / 1000
3)    移位方法:Gray = (R*76 + G*150 + B*30) >> 8
4)    平均值法: GRAY = (RED+BLUE+GREEN)/3
3.    彩色图像
彩色图像是RGB图像

 一、数字图像处理基础以及OpenCv简单函数运用

Opencv读写图像

1.    读入图像
img=cv2.imread()
2.    显示图像
cv2.imshow(窗口名,图像名)
3.    窗口等待
cv2.waitKey(time)
4.    删除窗口
cv2.destoryAllWindowa()
5.    写入图像
cv2.imwrite()

下面给大家一个示范

import cv2

#读取图片
img = cv2.imread("dijia.jpg")

#显示图像
cv2.imshow("demo", img)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图像
cv2.imwrite("dijiaxyz.jpg", img)

一、数字图像处理基础以及OpenCv简单函数运用

Opencv像素处理

1.    读取像素
灰度图像直接返回灰度值,彩色图像则返回RGB三个分量,但是有一点非常重要的是opencv读取的是BGR分量,而我们需要的是RGB进行图像处理。
灰度图像:返回值 = 图像(位置参数)
ps: test=img[88,42]

彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
ps: blue=img[88,142,0]
green=img[88,142,1]
red=img[88,142,2]
2.    修改像素
灰度图像:
img[88,142] = 255
彩色图像:
img[88,142, 0] = 255
img[88,142, 1] = 255
img[88,142, 2] = 255
示例代码:

import cv2
#读取图片
img = cv2.imread("dijia.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()

将行为100到200、列150到250的像素区域设置为白色

import cv2
#读取图片
img = cv2.imread("dijia.jpg", cv2.IMREAD_UNCHANGED)
#该区域设置为白色
img[100:200, 150:250] = [255,255,255]
#显示图像
cv2.imshow("demo", img)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

一、数字图像处理基础以及OpenCv简单函数运用

结语

革命尚未成功,同志仍需努力,大家可以关注微信公众号千条树下的果子查看原文

上一篇:88. 合并两个有序数组


下一篇:88. 合并两个有序数组