/Computer-Vision-OpenCV

此项目主要是本人在研究生期间在计算机视觉方面的研究所学习的内容和程序,其中有收集前人的代码,也有自己改进的代码。会随时更新,仅供大家参考学习并讨论之用。另外本人是计算机视觉和深度学习方面的在读研究生,有需要一起沟通的话,可以联系微信:sincos246835

Primary LanguagePython

Computer-Vision-OpenCV

此项目主要是本人在研究生期间在计算机视觉方面的研究所学习的内容和程序,其中有收集前人的代码,也有自己改进的代码。会随时更新,仅供大家参考学习并讨论之用。另外本人是计算机视觉和深度学习方面的在读研究生,有需要一起沟通的话,可以联系微信:sincos246835

将图像由rgb颜色空间转换到其他空间,查看有什么变化。

This is an image

使用numpy包创建图像和复制图像。

This is an image

遍历像素点,修改像素值。

This is an image

图像的加减乘除运算。

This is an image

通过添加cv2.createTrackerbar()函数实现动态调整图像亮度和对比度。

This is an image

  • 给图像添加颜色

    This is an image

  • 图像位级运算(与、或、非、异或)

    This is an image

  • 图像通道运算(分离、合并、交换)

    This is an image

# -*-coding:utf-8-*-
"""
File Name: color_operation.py
Program IDE: PyCharm
Create File By Author: Hong
"""
import cv2 as cv
import numpy as np


def image_display(image_path: str):
    """
    多个图像在一个窗口内显示
    :param image_path: 传入图像路径
    :return:
    """
    img = cv.imread(image_path, cv.IMREAD_COLOR)

    # 颜色取反
    invert = cv.bitwise_not(img)
    # 高斯模糊
    gaussianBlur = cv.GaussianBlur(img, (0, 0), 10)
    # 镜像
    flip = cv.flip(img, 1)  # 0表示绕x轴翻转;1表示绕y轴翻转;-1表示绕两个轴翻转

    # 方法1:创建一个画布,将所有图像复制到画布中,最后显示画布
    h, w, _ = img.shape

    img_list = [img, invert, gaussianBlur, flip]

    four_view = np.zeros((h * 2 + 10, w * 2 + 10, 3), np.uint8)
    four_view[:, :] = 255  # 给所有通道的像素值赋值255
    for i in range(len(img_list)):
        row = i // 2
        col = i % 2
        print(row, col)
        # 将小图像复制到大画布上。
        np.copyto(four_view[(h + 10) * row:h * (row + 1) + 10 * row, (w + 10) * col:w * (col + 1) + 10 * col],
                  img_list[i])
    cv.imshow('result', four_view)

    # 方法2:使用numpy的水平堆叠和竖直堆叠完成所有图像的堆叠,最后一起显示
    vs1 = np.hstack((img, invert))  # 水平堆叠
    vs2 = np.hstack((gaussianBlur, flip))  # 水平堆叠
    result = np.vstack((vs1, vs2))  # 竖直堆叠

    # 初略解决imshow()中文乱码显示的问题。不能完全解决,有些中文无法显示。这是python-opencv的弊端
    def zh_ch(string):
        return string.encode('gbk').decode(errors='ignore')

    cv.imshow(zh_ch('图片'), result)

    cv.waitKey(0)
    cv.destroyAllWindows()


if __name__ == '__main__':
    path = 'images/daiyutong.png'
    image_display(path)

两种方法实现一个窗口显示多张图像。

This is an image

翻转
旋转

多边形绘制:

正五边形

使用鼠标响应函数绘制人脸边界框:

人脸边界框