概括
本文主要用于记录图像处理学习过程中的笔记与疑问,使用pycharm IDE python语言和opencv工具。
第一章 简单的图像处理方式
图片、视频资源读取
图片读取
import cv2 as cv
import numpy as np
src = cv.imread("C:/Users/H/Desktop/13d98c6f3117f0a19b9d40c44ac7a30f.jpg")
cv.imshow("src",src)
cv.waitKey(0)
cv.destroyAllWindows()
运行结果:
视频读取:
import cv2 as cv
import numpy as np
def video_demo():
capture = cv.VideoCapture(0)
while True:
ret, frame = capture.read()
if cv.waitKey(100) == 27:
break
cv.imshow("frame", frame)
video_demo()
cv.waitKey(0)
cv.destroyAllWindows()
视频读取的处理需要截取每一帧图片对图片进行处理后组合展示,呈现视频效果。
色彩空间的转换、对比度、亮度调整
HSV图像空间 HSV色彩空间(Hue-色调、Saturation-饱和度、Value-值)将亮度从色彩中分解出来,在图像增强算法中用途很广,在很多图像处理任务中,经常将图像从RGB色彩空间转换到了HSV色彩空间,以便更好地感知图像颜色,利用HSV分量从图像中提取感兴趣的区域。
YUV YCrCb该颜色空间主要是基于人眼对亮度比对色度敏感这一特性而来的,将颜色分量和亮度分量分离开来。 HSV图像空间表
def color_space_demo(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
cv.imshow("gray", gray)
hsv = cv.cvtColor(image, cv.COLOR_RGB2HSV)
cv.imshow("hsv", hsv)
yuv = cv.cvtColor(image, cv.COLOR_RGB2YUV)
cv.imshow("yuv", yuv)
Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
cv.imshow("Ycrcb", Ycrcb)
def contrast_brightness_demo(image, c, b):
h, w, ch = image.shape
blank = np.zeros([h, w, ch], image.dtype)
dst = cv.addWeighted(image, c, blank, 1 - c, b)
cv.imshow("con-bri-demo", dst)
像素运算
图像的像素运算:加减乘除、均值 、方差。
import cv2 as cv
import numpy as np
def add_demo(m1, m2):
dst = cv.add(m1, m2)
cv.imshow("add_demo", dst)
def subtract_demo(m1, m2):
dst = cv.subtract(m1, m2)
cv.imshow("subtract_demo", dst)
def divide_demo(m1, m2):
dst = cv.divide(m1, m2)
cv.imshow("divide_demo", dst)
def multiply_demo(m1, m2):
dst = cv.multiply(m1, m2)
cv.imshow("multiply_demo", dst)
def others(m1, m2):
M1, dev1 = cv.meanStdDev(m1)
M2, dev2 = cv.meanStdDev(m2)
h, w = m1.shape[:2]
print(M1)
print(M2)
print(dev1)
print(dev2)
img = np.zeros([h, w], np.uint8)
m, dev = cv.meanStdDev(img)
print(m)
print(dev)
src1 = cv.imread("C:/Users/H/Desktop/92e8823ecc933f05edbfe5f9186e42c2.jpg")
src2 = cv.imread("C:/Users/H/Desktop/13d98c6f3117f0a19b9d40c44ac7a30f.jpg")
print(src1.shape)
print(src2.shape)
cv.namedWindow("input image1", cv.WINDOW_AUTOSIZE)
cv.imshow("input image1", src1)
cv.namedWindow("input image2", cv.WINDOW_AUTOSIZE)
cv.imshow("input image2", src2)
add_demo(src1, src2)
subtract_demo(src1, src2)
divide_demo(src1, src2)
multiply_demo(src1, src2)
others(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()
泛洪填充 ROI
ROI 是指对图像提取出有用的部分
在这里插入代码片
|