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()
相关推荐
循环过三天19 小时前
3.1、Python-列表
python·算法
青青草原羊村懒大王19 小时前
python基础知识三
开发语言·python
傻啦嘿哟19 小时前
Python高效实现Word转HTML:从基础到进阶的全流程方案
人工智能·python·tensorflow
思通数科多模态大模型19 小时前
扑灭斗殴的火苗:AI智能守护如何为校园安全保驾护航
大数据·人工智能·深度学习·安全·目标检测·计算机视觉·数据挖掘
wu_jing_sheng020 小时前
深度学习入门:揭开神经网络的神秘面纱(附PyTorch实战)
python
Ace_317508877620 小时前
淘宝店铺全量商品接口实战:分类穿透采集与增量同步的技术方案
大数据·数据库·python
LeonDL16820 小时前
基于YOLO11深度学习的电动车头盔检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】
人工智能·python·深度学习·pyqt5·yolo数据集·电动车头盔检测系统·yolo11深度学习
carver w20 小时前
彻底理解传统卷积,深度可分离卷积
人工智能·深度学习·计算机视觉
wxin_VXbishe1 天前
springboot在线课堂教学辅助系统-计算机毕业设计源码07741
java·c++·spring boot·python·spring·django·php
程序员三藏1 天前
使用Docker和Selenium构建自动化测试环境
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例