图像处理(cv)

这里写目录标题

读取图像

import cv2 as cv
img_data = cv.imread("../00000.jpg")
cv.imshow("img",img_data)
while True:
    if ord('q') == cv.waitKey(0):
        break
cv.destroyAllWindows()

图像处理(cv)

图像灰度化

灰度是指只含亮度信息,不含色彩信息的图像。黑白照片就是灰度图,特点是亮度由暗到明,变化是连续的。要表示灰度图,就需要把亮度值进行量化
使用灰度图的好处:
① RGB的值都一样。
② 图像数据即调色板索引值,就是实际的RGB值,也就是亮度值。
③ 因为是256色调色板,所以图像数据中一个字节代表一个像素,很整齐。
所以,做图像处理时都采用灰度图

图像处理(cv)
法1直接调用cv代码
img_data = cv.imread("../00000.jpg")

gray_data = cv.cvtColor(img_data,cv.COLOR_BGR2GRAY)
cv.imshow("img",gray_data)

图像处理(cv)
法2 自己改造像素值
gray_data = cv.cvtColor(img_data,cv.COLOR_BGR2RGB)
row, col, channel = gray_data.shape
for i in range(row):
    for j in range(col):

        gray_data[i,j] = np.uint8(min(gray_data[i,j,0],gray_data[i,j,1],gray_data[i,j,1]))
cv.imshow("gray_data2",gray_data)

效果对比

图像处理(cv)

图像二值化

图像处理(cv)

什么叫图像的二值化?二值化就是让图像的像素点矩阵中的每个像素点的灰度值为0(黑色)或者255(白色),也就是让整个图像呈现只有黑和白的效果。在灰度化的图像中灰度值的范围为0~255,在二值化后的图像中的灰度值范围是0或者255。
黑色:
二值化后的R = 0

二值化后的G = 0

二值化后的B = 0
白色:
二值化后的R = 255

二值化后的G = 255

二值化后的B = 255

那么一个像素点在灰度化之后的灰度值怎么转化为0或者255呢?比如灰度值为100,那么在二值化后到底是0还是255?这就涉及到取一个阀值的问题。

图像处理(cv)

ret, th1 = cv.threshold(img_data,150,255,cv.THRESH_BINARY)

图像处理(cv)

图像处理(cv)
th2 = cv.adaptiveThreshold(img_data,255,cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY,11,2)
th3 = cv.adaptiveThreshold(img_data,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,11,2)

图像处理(cv)

图像降噪

图像处理(cv)

; 均值滤波

图像处理(cv)
img_data = cv.imread("../00000.jpg")

img_data = cv.cvtColor(img_data,cv.COLOR_BGR2RGB)

mean_img = cv.blur(img_data,(9,9))
mean_img2 = cv.blur(img_data,(19,19))
mean_img3 = cv.blur(img_data,(29,29))
cv.imshow("img",mean_img)
cv.imshow("img2",mean_img2)
cv.imshow("img3",mean_img3)

图像处理(cv)
卷积核越大,越想越平滑(模糊)

高斯滤波

图像处理(cv)

gauss_img = cv.GaussianBlur(img_data,(9,9),0)
gauss_img2 = cv.GaussianBlur(img_data,(19,19),0)
gauss_img3 = cv.GaussianBlur(img_data,(29,29),0)
cv.imshow("img",gauss_img)
cv.imshow("img2",gauss_img2)
cv.imshow("img3",gauss_img3)

图像处理(cv)
可以看到,高斯滤波比均值滤波要好一点.

中值滤波

图像处理(cv)
图像处理(cv)

def make_sp_noise(image,ration):

    h,w = image.shape[:2]
    image_copy = image.copy()
    nums = int(h * w * ration)
    for i in range(nums):
        row = np.random.randint(0,h)
        col = np.random.randint(0,w)
        if i % 2 == 0:
            image_copy[row,col] = 255
        else:
            image_copy[row,col] = 0
    return image_copy

img_data = cv.cvtColor(img_data,cv.COLOR_BGR2RGB)
noise_img_data = make_sp_noise(img_data,0.3)
cv.imshow("noise_img",noise_img_data)

图像处理(cv)
下边用中值滤波开始去噪
median_img1 = cv.medianBlur(noise_img_data,1)
median_img2 = cv.medianBlur(noise_img_data,3)
median_img3 = cv.medianBlur(noise_img_data,5)
cv.imshow("noise_img1",median_img1)
cv.imshow("noise_img2",median_img2)
cv.imshow("noise_img3",median_img3)

图像处理(cv)

双边滤波

图像处理(cv)

img_data = cv.imread("../00000.jpg")
shuangbian_data1 = cv.bilateralFilter(img_data,0,21,21)
shuangbian_data2 = cv.bilateralFilter(img_data,0,41,41)
shuangbian_data3 = cv.bilateralFilter(img_data,0,61,61)
cv.imshow('img',img_data)
cv.imshow('shuangbian',shuangbian_data1)
cv.imshow('shuangbian2',shuangbian_data2)
cv.imshow('shuangbian3',shuangbian_data3)

图像处理(cv)
图像处理(cv)

磨皮效果

以上是cv对图片的一些处理…

Original: https://blog.csdn.net/qq_36538942/article/details/126261915
Author: 奔跑的蜗牛啊啊
Title: 图像处理(cv)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/532717/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球