图像预处理 ————灰度化

本文探讨了图像预处理中的灰度化技术,包括分量法、最大值法和加权平均法,详细阐述了这三种方法在将彩色图像转化为灰度图像过程中的应用和原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分量法、最大值法、加权平均法

# -*- coding: UTF-8 -*-
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

# def zh_ch(string):
#     return string.encode("gbk").decode(errors="ignore")

img = cv.imread("test.jpg")  # 读取指定位置的彩色图像
# img = cv.imread("test.jpg", cv.IMREAD_COLOR)  # 读取指定位置的彩色图像
# gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# cv.imshow("img", gray)  # 显示图片
height, width, channel = img.shape

# 分量法
R = np.zeros(img.shape, np.uint8)
G = np.zeros(img.shape, np.uint8)
B = np.zeros(img.shape, np.uint8)
for i in range(height):
    for j in range(width):
        R[i, j] = img[i, j, 0]
        G[i, j] = img[i, j, 1]
        B[i, j] = img[i, j, 2]
cv.namedWindow('R11111',0)
cv.imshow("R11111", R)
cv.namedWindow('G22222222',0)
cv.imshow('G22222222', G)
cv.namedWindow('B33333333',0)
cv.imshow('B33333333', B)

# # 最大值法
#
二值化是一种常见的图像处理方,它将灰度图像转换为黑白图像。二值化方可以根据不同的应用场景进行选择,例如简单阈值二值化、自适应阈值二值化等等。在这里,我们介绍一下简单阈值二值化的C++实现及案例。 简单阈值二值化的思路是将灰度图像中灰度值小于一个固定阈值的像素设置为黑色(0),其他像素设置为白色(255)。阈值的选择可以根据实际应用进行调整。 下面是C++代码实现: ```c++ #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { // 读取图像 Mat src = imread("test.jpg", IMREAD_GRAYSCALE); // 阈值二值化 Mat dst; threshold(src, dst, 100, 255, THRESH_BINARY); // 显示图像 imshow("src", src); imshow("dst", dst); waitKey(0); return 0; } ``` 在上述代码中,使用了OpenCV库进行图像处理。首先,读取了一张灰度图像。然后,使用threshold函数进行阈值二值化处理。函数中的参数含义为:src为输入图像,dst为输出图像,100为阈值,255为超过阈值的像素值,THRESH_BINARY表示二值化处理。 下面是一个简单的案例,将一张彩色图像进行简单阈值二值化处理: ![原图](https://img-blog.csdn.net/20180421210435613?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1amluZ19jb25fYmxvZy5wbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75) ```c++ #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { // 读取图像 Mat src = imread("test.jpg"); // 灰度化 Mat gray; cvtColor(src, gray, COLOR_BGR2GRAY); // 阈值二值化 Mat dst; threshold(gray, dst, 100, 255, THRESH_BINARY); // 显示图像 imshow("src", src); imshow("dst", dst); waitKey(0); return 0; } ``` 运行结果如下: ![结果](https://img-blog.csdn.net/20180421210501646?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1amluZ19jb25fYmxvZy5wbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75) 从结果可以看出,在简单阈值二值化处理后,图像变成了黑白二值图像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值