1.显示并打印图片的信息 

import cv2 as cv


def get_image_info(image):
    print(type(image))
    print(image.shape)#打印宽高和通道数
    print(image.size)#打印图片的尺寸
    print(image.dtype)

src = cv.imread("D:/q.jpg") #获取图片路径
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)#显示图片
get_image_info(src)
cv.waitKey(0)
cv.destroyAllWindows()

2.Numpy数组的相关操作

import cv2 as cv
import numpy as np


def access_pixels(image):
    print(image.shape)
    height = image.shape[0]#获取图像的高
    width = image.shape[1]#获取图像的宽
    channels = image.shape[2]#获取通道数
    print("width : %s height : %s channels : %s" % (width, height, channels))
    #循环处理很慢不建议使用
    for row in range(height):#改变每个点的像素
        for col in range(width):
            for cha in range(channels):
                pv = image[row, col, cha]
                image[row, col, cha] = 255 - pv

    cv.imshow("pixels_demo", image)


def inverse(image):
    dst = cv.bitwise_not(image)#每个像素点取反
    cv.imshow("inverse dome", dst)


#创建一个图片
def create_image():
    #创建一个每个像素点均为零的图片
    img1 = np.zeros([400, 400, 3], np.uint8)
    #给第一个通道赋值
    img1[:, :, 0] = np.ones([400, 400]) * 255
    cv.imshow("new img1", img1)
    #写入图片
    cv.imwrite("D:/img1.jpg", img1)

    img2 = np.ones([400, 400, 3], np.float32)
    cv.imshow("new img2", img2)
    print(img2)

    img3 = np.array([[20, 30, 40], [40, 50, 60], [70, 80, 90]])
    cv.imshow("new img3", img3)
    print(img3)
def main():
    create_image()
    cv.waitKey(0)
    cv.destroyAllWindows()

main()

3.色彩空间的转换和目标的捕捉

 

import cv2 as cv
import numpy as np

#捕捉视频中的绿色目标
def extrace_object_demo():
    capture = cv.VideoCapture("D:/p.mp4")
    while True:
        ret, frame = capture.read()
        if ret == False:
            break
        #转换色彩空间
        hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)

        lower_hsv = np.array([37, 43, 46])
        upper_hsv = np.array([77, 255, 255])
        mask = cv.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)

        cv.imshow("video", frame)
        cv.imshow("mask", mask)
        c = cv.waitKey(40)
        if c == 27:
            break
#色彩空间的转换
def color_space_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BAYER_BG2GRAY)
    cv.imshow("gray", gray)
    hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
    cv.imshow("hsv", hsv)
    yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
    cv.imshow("yuv", yuv)
    ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
    cv.imshow("ycrcb", ycrcb)


def main():
    extrace_object_demo()
    cv.waitKey(0)
    cv.destroyAllWindows()


main()

OpenCV处理图片的一些小知识

 

 

4.像素运算

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 logic_and_demo(m1, m2):
    dst = cv.bitwise_and(m1, m2)
    cv.imshow("logic_and_demo", dst)


def logic_or_demo(m1, m2):
    dst = cv.bitwise_or(m1, m2)
    cv.imshow("logic_or_demo", dst)


def logic_xor_demo(m1, m2):
    dst = cv.bitwise_xor(m1, m2);
    cv.imshow("logic_xor_demo", dst)


def logic_not_demo(m1):
    dst = cv.bitwise_not(m1)
    cv.imshow("logic_not_demo", dst)


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("contrast_brightness_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)
    img.fill(255)
    m, dev = cv.meanStdDev(img)
    print(m)
    print(dev)
    cv.imshow("new img", img)


print("----------------hello Python---------------")
src1 = cv.imread("LinuxLogo.jpg")
src2 = cv.imread("WindowsLogo.jpg")
src = cv.imread("lena.png")
print(src1.shape)
print(src2.shape)

cv.imshow("image1", src1)
cv.imshow("image2", src2)
contrast_brightness_demo(src, 1.2, 100)
cv.imshow("image", src)
add_demo(src1, src2)
subtract_demo(src1, src2)
divide_demo(src1, src2)
multiply_demo(src1, src2)
others(src1, src2)
logic_and_demo(src1, src2)
logic_or_demo(src1, src2)
logic_xor_demo(src1, src2)
logic_not_demo(src1)
cv.waitKey(0)
cv.destroyAllWindows()

两张原始图片

OpenCV处理图片的一些小知识 

进行加运算

OpenCV处理图片的一些小知识

进行减运算Linux - Windows

OpenCV处理图片的一些小知识

进行乘运算

OpenCV处理图片的一些小知识

进行与运算

OpenCV处理图片的一些小知识

进行或运算

OpenCV处理图片的一些小知识

进行异或运算

OpenCV处理图片的一些小知识

Linux进行取反运算

OpenCV处理图片的一些小知识

 

 

相关文章: