opencv图像灰度化

  • 图像灰度化就是将图像的亮度值(R,G,B)按照一定的方式映射到0-255之间的灰度值上,为了使图像看起来不那么单调,需要将图像的亮度值进行变换。下面简单介绍下 opencv中的灰度化函数: 1、先将图像的像素值转换为R,G,B三个分量,其中R分量用于图像灰度变换,G分量用于彩色变换。 2、然后根据灰度变换公式: 3、根据公式可以计算出每个像素点的灰度值 4、最后把这些灰度值对应到每个像素点的值上就完成了图像灰度化。 1、先将图像转换为R,G,B三个分量。 3、最后把每个像素点的灰度值对应到对应的颜色通道上。

    • 1、利用 opencv中的 image. palindrome库,调用 sobel函数来获取像素值,然后利用灰度变换函数计算出灰度值。

      1、首先使用 image. palindrome库中的 sobel函数,获取像素值,然后利用灰度变换函数计算出灰度值。 2、在 opencv中,如果想对图像的某一像素点进行灰度变换,可以直接使用 grid函数(这是一个与 class文件名同名的函数)。grid函数实现了图像中多个像素点的灰度值统一。 3、在 opencv中,我们可以通过 openCV库中的 reverse和 convert方法来实现图像灰度化。 4、具体操作如下: 1)首先将图像分成多个像素值相同的像素组,每一个像素组可以看成一个灰度值相同的灰度值为1的像素,例如在 image. palindrome库中,我们将图像分为了四个像素组: 其中每个像素组对应一个灰度变换函数,如上面代码所示。 2)然后使用 reverse和 convert方法来分别计算每个像素组的灰度变换值,通过调用 reverse函数来获取每个像素组的灰度值; 3)最后将计算得到的灰度值与图像中所有像素点灰度值相乘,即可得到图像中所有像素点的灰度值。 5、可以直接调用 grid函数,来计算图像中所有像素点的灰度值: 6、但是这种方法会将图像分割成一大片一大片的灰度区域,无法处理一些比较小的区域。例如在图片中有一个点,可以认为这个点是图像中的一个灰度值为1的像素组,那么我们就可以直接将这个点作为分割边界: 7、可以通过 symbols函数来实现图像分割。symbols函数是对一个整幅图像进行灰度变换计算得到结果。 8、为了方便理解,我们将整个图像分成四个大小相同的部分,分别是红色、绿色、蓝色和白色。这四个部分分别对应不同的颜色通道: 9、红色通道对应红色灰度值;绿色通道对应绿色灰度值;蓝色通道对应蓝色灰度值;白色通道对应白色灰度值。可以通过计算得到四个颜色通道对应的灰度变换公式:

    • 2、利用 opencv中的opencv-benchmark库,设置像素值与对应的通道阈值,然后使用opencv-benchmark库中的 gamma函数,计算出每个像素点的灰度值。

      3、在 opencv中,输入一幅图片,可以直接用 sobel函数,输出一幅灰度化后的图片。 4、我们可以使用opencv-benchmark库中的 gamma函数,将图像的亮度值映射到一个255灰度值上。 5、opencv-benchmark库中有一个函数是从一个 RGB色彩空间到另一个 RGB色彩空间的映射函数,它可以将图像灰度化后的颜色通道映射到一个 RGB颜色空间上。

    • 3、在 opencv中对每个像素点灰度值进行归一化处理,然后利用 sobel函数获取每个像素点的颜色通道。

      而根据公式,R分量可以被变换为0-255之间的任何一个值,即R分量可以被变换为0-255之间的任意一个值。因为R和G是颜色分量,所以它们能够对应到每个像素点上。 2、然后对R,G,B三个分量进行归一化处理,归一化是指在 opencv中将一张图像的 RGB值按照其灰度值进行映射的过程。RGB三个像素点中 RGB分量都是由三个不同颜色的亮度值组成的,其中第一个亮度值R代表着该像素点的颜色(红绿蓝);第二个亮度值G代表着该像素点的颜色(黄蓝绿);第三个亮度值B代表着该像素点的颜色(黑白)。归一化后的 RGB三个像素点可以被对应到三个不同通道上。由于R分量和G分量是对同一颜色通道进行映射,因此它们是相对独立的。 3、然后将这三个颜色通道分别映射到0-255之间的任意一个通道上,即把 RGB三个像素点映射到三个不同色彩通道上。最终得到灰度化后的图像。根据公式计算出每个像素点对应到哪一个颜色通道上,然后将这三个通道连接起来得到最终结果。灰度变换就完成了。 4、我们可以用 opencv来实现对图像灰度变换后得到灰度值的操作,下面就是用 opencv实现灰度化后得到灰度值对应到 RGB三个颜色通道上的代码: 5、然后使用 sobel函数将这些对应到三个不同色彩通道上的灰度值映射到 RGB颜色通道上。因为 sobel函数获取每个像素点对应到哪一个颜色通道上是由 opencv自动计算决定的,所以 sobel函数不需要我们自己去实现。 9、通过上面介绍,我们可以看出灰度变换后得到灰度值对应到 RGB三个色彩通道上都是由 opencv自动计算决定的。

    • 4、将这些灰度值对应的颜色通道作为新的颜色通道,再对新的颜色通道进行灰度变换处理。

      灰度变换是图像处理中的一种基本运算,它将灰度图像的亮度值映射到0-255之间的灰度值上。通过对图像进行灰度变换,可以得到不同亮度值对应的灰度值。 在图像处理中,利用灰度变换函数可以方便地将灰度图像转换为彩色图像,从而便于对图像进行后续处理。对原始图像进行灰度变换后,可以得到一幅新的彩色图像,而彩色图像在现实生活中也常常被人们所使用,如彩色印刷、彩色电视、彩色照片等。 opencv中的灰度化函数可以将一个灰度图像转换成一个颜色通道(RGB)的矩阵。可以对一个像素点进行灰度变换,也可以对多个像素点进行灰度变换。例如,给定一个灰度等级为9的图像: 通过计算9个像素点的灰度值和对应的颜色通道,就可以得到9个新颜色通道。将这些新颜色通道作为新的 RGB矩阵进行后续处理即可得到想要的彩色效果。

      扫描二维码关注公众号,回复: 15438773 查看本文章

以下是几种常用的 OpenCV 图像灰度化代码:

1. 使用 cvtColor 函数将图像转换为灰度图像:
```python
import cv2
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
2. 使用 cv2.imread 函数读取图像,并使用 cv2.cvtColor 函数将图像转换为灰度图像:
```python
import cv2
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('Gray Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
3. 使用 numpy 的 dot 函数将图像转换为灰度图像:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray_img = np.dot(img[..., :3], [0.299, 0.587, 0.114])
cv2.imshow('Gray Image', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上是几种常用的 OpenCV 图像灰度化代码,可以根据自己的需求选择适合的方法。

猜你喜欢

转载自blog.csdn.net/qq_42751978/article/details/130824526
今日推荐