OpenCV-Python小白进阶之灰度转化、分离RGB与直方图显示
条件
环境:OpenCV Pycharm python3.7
素材:
转化为灰度图
函数:
cv2.imread(path)载入图片
cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)把img图片从RGB格式切换为GRAY
cv2.namedWindow(name, aotusize)给窗口命名,大小不可自由调整
cv2.resizeWindow(name, length, width)给窗口设置长与宽
cv2.imshow(name, img)显示img图片
cv2.imwrite(path, img)创建path路径并写入img图片
代码实现
import cv2
img = cv2.imread('p1.jpg')
img0 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imwrite('p2.jpg', img0)
cv2.namedWindow('figure1', 0)
cv2.resizeWindow('figure1', 960, 480)
cv2.imshow('figure1', img0)
输出
分离RGB
函数
cv2.split(img)分离img图片的RGB,注意!!!电脑是以BGR的顺序分离的
代码实现
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('p1.jpg')
img0 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imwrite('p2.jpg', img0)
cv2.namedWindow('figure1', 0)
cv2.resizeWindow('figure1', 960, 480)
cv2.imshow('figure1', img0)
for col in ['Blue', "Green", 'Red']:
cv2.namedWindow(col, 0)
cv2.resizeWindow(col, 960, 480)
b, g, r = cv2.split(img)
cv2.imwrite('Blue.jpg', b)
cv2.imwrite('Red.jpg', r)
cv2.imwrite('Green.jpg', g)
cv2.imwrite('Blue.jpg', b)
cv2.imwrite('Red.jpg', r)
cv2.imwrite('Green.jpg', g)
cv2.destroyAllWindows()
输出
red
blue
Green
直方图显示
函数
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) 第一个参数必须用方括号括起来。 第二个参数是用于计算直方图的通道,这里使用灰度图计算直方图,所以就直接使用第一个通道; 第三个参数是Mask,这里没有使用,所以用None。 第四个参数是histSize,表示这个直方图分成多少份(即多少个直方柱)。第二个例子将绘出直方图,到时候会清楚一点。 第五个参数是表示直方图中各个像素的值,[0.0, 256.0]表示直方图能表示像素值从0.0到256的像素。代码实现
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('p1.jpg')
img0 = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imwrite('p2.jpg', img0)
cv2.namedWindow('figure1', 0)
cv2.resizeWindow('figure1', 960, 480)
cv2.imshow('figure1', img0)
for col in ['Blue', "Green", 'Red']:
cv2.namedWindow(col, 0)
cv2.resizeWindow(col, 960, 480)
b, g, r = cv2.split(img)
cv2.imwrite('Blue.jpg', b)
cv2.imwrite('Red.jpg', r)
cv2.imwrite('Green.jpg', g)
r = cv2.imshow("Red", r)
g = cv2.imshow("Green", g)
b = cv2.imshow("Blue", b)
cv2.destroyAllWindows()
color = ['b', 'g', 'r']
for i, col in enumerate(color):
histr = cv2.calcHist([img], [i], None, [256], [0, 256])
plt.plot(histr, color=col)
plt.xlim(0, 256)
plt.ylim(0, 700000)
plt.show()
histr = cv2.calcHist([img0], [0], None, [256], [0, 256])
plt.plot(histr, color=col)
plt.xlim(0, 256)
plt.ylim(0, 700000)
plt.show()
输出