a
=
np
.
full
(
(
255
,
255
,
3
)
,
255
)
a
=
a
.
astype
(
np
.
uint8
)
cv2
.
imwrite
(
"2.jpg"
,
a
)
b
=
np
.
zeros
(
[
255
,
255
,
3
]
)
b
=
b
.
astype
(
np
.
uint8
)
cv2
.
imwrite
(
"1.jpg"
,
b
)
1.jpg
2.jpg
import cv2import numpy as npa=np.full((255,255,3),255)a=a.astype(np.uint8)cv2.imwrite("2.jpg", a)b=np.zeros([255,255,3])b=b.astype(np.uint8)cv2.imwrite("1.jpg", b)1.jpg2.jpg
边缘在人类视觉和
计算机视觉
中均起着重要的作用。
人类能够仅凭一张背景剪影或一个草图就识别出物体类型和姿态。
其中
OpenCV
提供了许多边缘检测滤波函数,这些滤波函数都会将非边缘区域转为
黑色
,将边缘区域转为
白色
或其他饱和的
颜色
。
不过这些滤波函数都很容易将噪声错误地识别为边缘,所以需要进行模糊处理。
本次的模糊操作使用高斯模糊(低通滤波器),最常用的模糊滤波器(平滑滤波器)之一,是一个削弱高频信号强度的低通滤波器。
低通滤波器,在像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度,主要用于去噪和模糊化。
边缘检测则是使用
OpenCV
的Canny函数实现,算法虽然很复杂,但是代码却很简单。
由像素点组成的矩阵,每个元素(像素点)都是在0-
255
之间
为什么每个像素点都是界于0-
255
之间?
1、位图模式(黑白图像) 仅仅只有1位深度的图像 ->(0,1,1,1,0 …)
0->纯
黑色
1->纯
白色
2、灰度图像:【0,
255
】
有8位深度的图像
(0,0,0,0,0,0,0,0,0) ->2**0=1
(1,1,1,1,1,1,1,1,1) ->2**8 =
灰度图像:用 [0,
255
] 表示256个灰度等级,0表示纯
黑色
,
255
表示纯
白色
。
彩色图像:由红绿蓝三通道组成;彩色空间中,存在R(红色)通道、G(绿色)通道、B(蓝色)通道、这三个通道,每个色彩通道值的范围都在[0,
255
]之间。
注意:彩色空间中通道顺序是RGB,
opencv
中是B——G——R。
2.像素处理
import cv2
img = cv2.imread.
opencv
学习笔记之二值化
1.什么是二值化
二值化,从名词意义上可以看出来,是将一共物体转化成两个值。二值即:0或
255
.即一个
白色
一个
黑色
。即一个图片经过二值化之后会显示成
白色
和
黑色
的形式。
2.什么时候需要二值化
我是最近有一个边缘检测的东西,才回头看二值化的问题因为当一个图片有很多的元素和噪声参杂,我们直接调用canny边缘检测是不行的,无论你怎么调阈值都不能完整的将边缘提取出来。二值化此时就是将不需要的 元素除去。
3.二值化
(1)全局二值化:
对于一个完整的图像,我们对其的全局进行二值化,范
#define CV_COLOR_RED cv::Scalar(0,0,
255
) //纯红
#define CV_COLOR_GREEN cv::Scalar(0,
255
,0) //纯绿
#define CV_COLOR_BLUE cv::Scalar(
255
,0,0) //纯蓝
#define CV_COLOR_DARKGRAY cv::Scalar(169,169,169) //深灰色
#define CV_COLO...
要将
黑色
变为
白色
,你可以使用
OpenCV
-Python中的cv2.bitwise_not()函数。该函数将图像中的每个像素的每个通道的值取反,从而将
黑色
变为
白色
,
白色
变为
黑色
。
下面是一个简单的示例代码:
```python
import cv2
# 读取图像
image = cv2.imread("input.jpg")
# 将
黑色
变为
白色
image = cv2.bitwise_not(image)
# 保存处理后的图像
cv2.imwrite("output.jpg", image)
在这个示例中,我们首先使用`cv2.imread()`函数读取图像文件。然后,我们使用`cv2.bitwise_not()`函数将图像中的
黑色
变为
白色
。最后,我们使用`cv2.imwrite()`函数将处理后的图像保存到文件中。
请注意,这个示例代码中使用的图像是`input.jpg`,处理后的图像将保存到`output.jpg`文件中。你可以根据自己的需要修改这些文件名。