图像处理一百题(1-10)陆续更新

Posted 狗蛋儿l

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像处理一百题(1-10)陆续更新相关的知识,希望对你有一定的参考价值。

题来自于
读取图片:「画像処理100本ノック」中文版本!为图像处理初学者设计的 100 个问题。

问题一:通道交换

读取图像,然后将通道替换成通道。

下面的代码用于提取图像的红色通道。

注意,cv2.imread() 的系数是按顺序排列的!

其中的变量red表示的是仅有原图像红通道的imori.jpg。

答案:

import cv2

# function: BGR -> RGB


def BGR2RGB(img):
    b = img[:, :, 0].copy()
    g = img[:, :, 1].copy()
    r = img[:, :, 2].copy()

    # RGB > BGR
    img[:, :, 0] = r
    img[:, :, 1] = g
    img[:, :, 2] = b

    return img


# Read image
img = cv2.imread("imori.jpg")

# BGR -> RGB
img = BGR2RGB(img)

# Save result
cv2.imwrite("out.jpg", img)
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

问题二:灰度化(Grayscale)

将图像灰度化吧!

灰度是一种图像亮度的表示方法,通过下式计算: Y = 0.2126   R + 0.7152   G + 0.0722   B Y = 0.2126\\ R + 0.7152\\ G + 0.0722\\ B Y=0.2126 R+0.7152 G+0.0722 B

import cv2
import numpy as np

# Gray scale
def BGR2GRAY(img):
	b = img[:, :, 0].copy()
	g = img[:, :, 1].copy()
	r = img[:, :, 2].copy()

	# Gray scale
	out = 0.2126 * r + 0.7152 * g + 0.0722 * b
	out = out.astype(np.uint8)

	return out


# Read image
img = cv2.imread("imori.jpg").astype(np.float)

# Grayscale
out = BGR2GRAY(img)

# Save result
cv2.imwrite("out.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上是关于图像处理一百题(1-10)陆续更新的主要内容,如果未能解决你的问题,请参考以下文章

图像处理一百题(11-20)

图像处理一百题(11-20)

图像处理一百题(11-20)

LeetCode第一百题—相同的数—Python实现

java一百题:1~4

leetcode 简单 第一百题 压缩字符串