OpenCV+Python

安装 OpenCV

Python :直接 pip install opencv-python(核心库)和 opencv-contrib-python(扩展功能)。

bash 复制代码
pip install opencv-python
pip install opencv-contrib-python

验证安装:

python 复制代码
import cv2
print(cv2.__version__)  # 输出版本号

以下代码来源于:链接

python 复制代码
if __name__ == '__main__':
    # 读取图像
    image = cv2.imread('1.png')

    # 显示图像
    # cv2.imshow('Image', image)
    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    print('gray_image = ', gray_image)
    # cv2.imshow('Image', gray_image)
    edges = cv2.Canny(gray_image, threshold1=50, threshold2=150)
    print('edges = ', edges)

    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    dilated = cv2.dilate(edges, kernel, iterations=1)
    cv2.imshow('Image', dilated)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

    # 特征检测
    # image = cv2.imread('3.png')
    # orb = cv2.ORB_create()
    # keypoints, descriptors = orb.detectAndCompute(image, None)
    # image_with_keypoints = cv2.drawKeypoints(image, keypoints, None, color=(0, 255, 0))
    # cv2.imshow('Keypoints', image_with_keypoints)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows()

    # 人脸检测
    # image = cv2.imread('3.png')
    # face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
    # gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # faces = face_cascade.detectMultiScale(gray_image, scaleFactor=1.1, minNeighbors=5)
    # for (x, y, w, h) in faces:
    #     cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    # cv2.imshow('Faces', image)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows()

    # 交通标志识别
    # image = cv2.imread('5.png')
    #
    # gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # edges = cv2.Canny(gray_image, threshold1=50, threshold2=150)
    #
    # kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    # dilated = cv2.dilate(edges, kernel, iterations=1)
    # contours, _ = cv2.findContours(dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    # for contour in contours:
    #     if cv2.contourArea(contour) > 100:
    #         x, y, w, h = cv2.boundingRect(contour)
    #         cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)
    #
    # cv2.imshow('Traffic Sign Detection', image)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows()

    # 显示图像
    # image = cv2.imread('3.png')
    # gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # # 下面这行代码效果等价于上面两行代码
    # gray_scare_image = cv2.imread('3.png', cv2.IMREAD_GRAYSCALE)
    # ret, binary = cv2.threshold(gray_scare_image, 127, 255, cv2.THRESH_BINARY)
    # ret_inv, binary_inv = cv2.threshold(gray_scare_image, 127, 255, cv2.THRESH_BINARY_INV)
    # cv2.imshow('gray_image', gray_image)
    # cv2.imshow('gray_scare_image', gray_scare_image)
    # cv2.imshow('binary', binary)
    # cv2.imshow('binary_inv', binary_inv)
    # cv2.waitKey(0)
    # cv2.destroyAllWindows()

这个链接也看了:链接

拆分通道:

python 复制代码
    # # 显示图像
    # image = cv2.imread('3.png')
    # cv2.imshow('Image', image)
    # gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    # cv2.imshow('gray_image', gray_image)
    # hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    # cv2.imshow('hsv_image', hsv_image)
    # yuv_image = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)
    # cv2.imshow('yuv_image', yuv_image)
    #
    # # BGR通道拆分显示
    # b, g, r = cv2.split(image)
    # cv2.imshow("BGR - B", b)
    # cv2.imshow("BGR - G", g)
    # cv2.imshow("BGR - R", r)
    #
    # # HSV通道拆分显示
    # h, s, v = cv2.split(hsv_image)
    # cv2.imshow("HSV - H", h)  # 色相(颜色种类)
    # cv2.imshow("HSV - S", s)  # 饱和度(颜色鲜艳程度)
    # cv2.imshow("HSV - V", v)  # 明度(亮度)
    #
    # # YUV通道拆分显示
    # y, u, v = cv2.split(yuv_image)
    # cv2.imshow("YUV - Y", y)  # 亮度(类似灰度图)
    # cv2.imshow("YUV - U", u)  # 蓝色色度
    # cv2.imshow("YUV - V", v)  # 红色色度

腐蚀与膨胀:

python 复制代码
    image = cv2.imread('3.png')
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    # 腐蚀(Erosion):将图像中的白色区域收缩。
    eroded_img = cv2.erode(image, kernel, iterations=1)
    # 膨胀(Dilation):将图像中的白色区域扩展。
    dilated_img = cv2.dilate(image, kernel, iterations=1)
    # 开运算(先腐蚀再膨胀):用于去除小物体。
    opening_img = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
    # 闭运算(先膨胀再腐蚀):用于填补图像中的小孔洞。
    closing_img = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
    cv2.imshow('Image', image)
    cv2.imshow('eroded_img', eroded_img)
    cv2.imshow('dilated_img', dilated_img)
    cv2.imshow('opening_img', opening_img)
    cv2.imshow('closing_img', closing_img)

    cv2.waitKey(0)
    cv2.destroyAllWindows()
相关推荐
Blossom.11827 分钟前
把AI“刻”进玻璃:基于飞秒激光量子缺陷的随机数生成器与边缘安全实战
人工智能·python·单片机·深度学习·神经网络·安全·机器学习
tangchen。34 分钟前
YOLOv3 :目标检测的经典融合与创新
人工智能·计算机视觉·目标跟踪
Kratzdisteln1 小时前
【Python OOP Diary 1.1】题目二:简单计算器,改错与优化
python·面向对象编程
小白银子1 小时前
零基础从头教学Linux(Day 53)
linux·运维·python
skywalk81632 小时前
基于频域的数字盲水印blind-watermark
linux·开发语言·python
applepie_max2 小时前
GraphRAG本地部署 v2.7.0
python·rag·graphrag
sulikey2 小时前
从零配置一个规范的 Python Git 仓库(适用于 Gitee / GitHub)
git·python·pycharm·gitee·github
shaominjin1232 小时前
android在sd卡中可以mkdir, 但是不可以createNewFile
android·开发语言·python
我是华为OD~HR~栗栗呀2 小时前
华为od-22届考研-测试面经
java·c++·python·功能测试·华为od·华为·面试
学习路上_write3 小时前
神经网络初次学习收获
人工智能·python