一、Opencv基本操作
参考来源:【youcans的OpenCV例程200篇】
import cv2
import numpy as np
import random
import matplotlib.pyplot as plt
path = "D:/2Codefield/VS_code/python/Learn_Base/openCV/DATA/"
lenasrc = "Lena/"
baboonsrc = "Baboon/"
color_img = cv2.imread(path + lenasrc + "color.png", flags=1)
gray_img = cv2.imread(path + lenasrc + "color.png", flags=0)
color_img2 = cv2.imread(path + baboonsrc + "color.png")
cv2.imwrite(path + lenasrc + "gray2.png", gray_img)
cv2.imshow("Demo1", color_img)
cv2.imshow("Demo2", gray_img)
cv2.waitKey(0)
color_imgRGB = cv2.cvtColor(color_img, cv2.COLOR_BGR2RGB)
gray_imgRGB = cv2.cvtColor(color_img, cv2.COLOR_BGR2GRAY)
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.subplot(221), plt.title("1. RGB 格式(mpl)"), plt.axis('off')
plt.imshow(color_imgRGB)
plt.subplot(222), plt.title("2. BGR 格式(OpenCV)"), plt.axis('off')
plt.imshow(color_img)
plt.subplot(223), plt.title("3. 设置 Gray 参数"), plt.axis('off')
plt.imshow(gray_imgRGB, cmap='gray')
plt.subplot(224), plt.title("4. 未设置 Gray 参数"), plt.axis('off')
plt.imshow(gray_imgRGB)
plt.show()
xmin, ymin, w, h = 180, 190, 200, 200
imgCrop = color_img[ymin:ymin+h, xmin:xmin+w].copy()
cv2.imshow("DemoCrop", imgCrop)
cv2.waitKey(0)
roi = cv2.selectROI(color_img, showCrosshair=True, fromCenter=False)
xmin, ymin, w, h = roi
imgROI = color_img[ymin:ymin+h, xmin:xmin+w].copy()
cv2.imshow("DemoRIO", imgROI)
cv2.waitKey(0)
color_img_sz = cv2.resize(color_img, (400, 400))
color_img2_sz = cv2.resize(color_img2, (300, 400))
img3_sz = cv2.resize(color_img2_sz, (400, 300))
imgStackH = np.hstack((color_img_sz, color_img2_sz))
imgStackV = np.vstack((color_img_sz, img3_sz))
print("Horizontal stack:\nShape of color_img, color_img2 and imgStackH: ", color_img_sz.shape, color_img2_sz.shape, imgStackH.shape)
print("Vertical stack:\nShape of color_img, img3 and imgStackV: ", color_img_sz.shape, img3_sz.shape, imgStackV.shape)
cv2.imshow("DemoStackH", imgStackH)
cv2.imshow("DemoStackV", imgStackV)
cv2.waitKey(0)
bImg, gImg, rImg = cv2.split(color_img)
cv2.imshow("rImg", rImg)
imgZeros = np.zeros_like(color_img)
imgZeros[:, :, 2] = rImg
cv2.imshow("channel R", imgZeros)
print(color_img.shape, rImg.shape, imgZeros.shape)
cv2.waitKey(0)
bImg, gImg, rImg = cv2.split(color_img)
imgMerge = cv2.merge([bImg, gImg, rImg])
cv2.imshow("cv2Merge", imgMerge)
imgStack = np.stack((bImg, gImg, rImg), axis=2)
cv2.imshow("npStack", imgStack)
print(imgMerge.shape, imgStack.shape)
print("imgMerge is imgStack?", np.array_equal(imgMerge, imgStack))
cv2.waitKey(0)