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()
相关推荐
孟健1 天前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞1 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
曲幽1 天前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers
敏编程2 天前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪2 天前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
databook2 天前
ManimCE v0.20.1 发布:LaTeX 渲染修复与动画稳定性提升
python·动效
花酒锄作田2 天前
使用 pkgutil 实现动态插件系统
python
前端付豪2 天前
LangChain链 写一篇完美推文?用SequencialChain链接不同的组件
人工智能·python·langchain
曲幽2 天前
FastAPI实战:打造本地文生图接口,ollama+diffusers让AI绘画更听话
python·fastapi·web·cors·diffusers·lcm·ollama·dreamshaper8·txt2img
老赵全栈实战2 天前
Pydantic配置管理最佳实践(一)
python