OpenCV+Python

安装 OpenCV

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

pip install opencv-python
pip install opencv-contrib-python

验证安装:

import cv2
print(cv2.__version__)  # 输出版本号

以下代码来源于:链接

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()

这个链接也看了:链接

拆分通道:

    # # 显示图像# 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)  # 红色色度

腐蚀与膨胀:

    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()

图像旋转、平移、翻转:

    # 图像旋转image = cv2.imread('3.png')(h, w) = image.shape[:2]center = (w // 2, h // 2)M = cv2.getRotationMatrix2D(center, 45, 1.0)  # 旋转 45 度rotated_img = cv2.warpAffine(image, M, (w, h))cv2.imshow('rotated_img', rotated_img)# 图像平移M = np.float32([[1, 0, 100], [0, 1, 50]])  # 向右平移 100 像素,向下平移 50 像素translated_img = cv2.warpAffine(image, M, (w, h))cv2.imshow('translated_img', translated_img)# 图像翻转flipped_img = cv2.flip(image, 1)  # 水平翻转cv2.imshow('flipped_img', flipped_img)cv2.waitKey(0)cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916496.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代C++的一般编程规范

一般情况下不要使用std::endl,尤其是在循环中,因为可能一开始你只是想要打印一个换行符,但是"endl"做的更多,其还会刷新缓冲区,这会额外花费很多时间,相反,只需要使用“\n"&…

38.安卓逆向2-frida hook技术-过firda检测(三)(通过SO文件过检测原理)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 工具下载: 链接:https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

创建属于自己的github Page主页

安装手册 安装手册 环境要求 Node.js version 18.0 安装 Node.js 时,建议勾选所有和依赖相关的选项。 安装步骤 安装 Docusaurus 最简单的方法是使用 create-docusaurus 命令行工具,它可以帮助你快速搭建一个 Docusaurus 网站的基础框架。 你可以在…

Unity Catalog与Apache Iceberg如何重塑Data+AI时代的企业数据架构

在2025年DataAI Summit上,Databricks发布了一系列重大更新,标志着企业数据治理进入新阶段。其中,Unity Catalog的增强功能和对Apache Iceberg的全面支持尤为引人注目。这些更新不仅强化了跨平台数据管理能力,还推动了开放数据生态…

雨季,汽车经常跑山区,该如何保养?

雨季来临,山区道路变得湿滑难行,频繁穿梭于此的汽车面临着前所未有的挑战。如何在这样恶劣的环境中确保爱车安然无恙?本文将为你详细解析雨季经常跑山区的汽车该如何保养,让你在遭遇突发状况时也能从容应对。当雨季遇上山区路况&a…

Spring Boot音乐服务器项目-查询音乐模块

一、项目架构概览 该音乐播放服务器采用经典的MVC分层架构,核心模块包括: 实体层:定义数据模型Mapper层:数据库操作接口Controller层:HTTP请求处理工具层:加密、响应封装等辅助功能 项目核心功能包括用户…

Imagine:高效免费的图片压缩工具

很多时候,我们需要对图片进行压缩,却苦于找不到免费又好用的工具。这里给大家推荐一款电脑端的图片压缩软件——Imagine。 Imagine文末获取 它有诸多优点: 开源免费:无需担心付费问题,完全免费使用。 便捷易用&#…

《Uniapp-Vue 3-TS 实战开发》自定义年月日时分秒picker组件

目前组件: 组件完整代码: <template><view><picker mode="multiSelector" :value="multiIndex" :range="multiRange" @change="onMultiChange"><view class="picker">{{ formattedDateTime }}&l…

生命通道的智慧向导:Deepoc具身智能如何重塑医院导诊机器人的“仁心慧眼”

生命通道的智慧向导&#xff1a;Deepoc具身智能如何重塑医院导诊机器人的“仁心慧眼”清晨八点的三甲医院门诊大厅&#xff0c;一台导诊机器人突然转向无障碍通道。视觉系统捕捉到轮椅上的颤抖双手&#xff0c;自动降低语速并调大屏幕字体&#xff1b;识别出老人病历本上的“心…

【51单片机和数码管仿真显示问题共阴共阳代码】2022-9-24

缘由单片机和数码管仿真显示问题-嵌入式-CSDN问答 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f ,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共阴0~F消隐减号 void smxs(unsigned char mz, unsigned c…

Java#包管理器来时的路

不依赖任何Jar包 - HelloWorld.java mkdir demo && cd demo;# HelloWorld.java cat > HelloWorld.java << EOF public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, world!");} } EOF# 编译class javac …

Android Framework知识点

1 重点知识 1.1 Alarm 当手机重启或者应用被杀死的时候&#xff0c;Alarm会被删除&#xff0c;因此&#xff0c;如果想通过Alarm来完成长久定时任务是不可靠的&#xff0c;如果非要完成长久定时任务&#xff0c;可以这样&#xff1a;将应用的所有Alarm信息存到数据库中&#xf…

代码随想录算法训练营Day6 | 哈希表 Part 1

一、今日学习目标 掌握哈希表的核心理论&#xff08;哈希函数、哈希碰撞及解决方法&#xff09;&#xff0c;理解数组、set、map 三种哈希结构的适用场景&#xff0c;并通过「两个数组的交集」「快乐数」「两数之和」三道题目&#xff0c;实战掌握哈希表在快速查找、去重、键值…

5.13.树、森林与二叉树的转换

当使用"孩子兄弟表示法"存储树或森林时&#xff0c;最终会呈现出与二叉树类似的形态&#xff0c;所以树、森林与二叉树之间的转换本质上就是画出采用孩子兄弟表示法存储的树和森林。一."树->二叉树"的转换&#xff1a;1.例一&#xff1a;以上述图片左边…

Spring 核心流程

Spring 核心流程前言一、AbstractApplicationContext#refresh 方法解析1.1 前置1.2 refresh 方法1.2.1 prepareRefresh1.2.2 obtainFreshBeanFactory1.2.3 prepareBeanFactory1.2.4 postProcessBeanFactory1.2.5 invokeBeanFactoryPostProcessors1.2.6 registerBeanPostProcess…

RS485转Profinet网关与JRT激光测距传感器在S7-1200 PLC系统中的技术解析与应用

RS485转Profinet网关与JRT激光测距传感器在S7-1200 PLC系统中的技术解析与应用技术核心&#xff1a;协议转换与数据桥梁在工业自动化系统中&#xff0c;RS485转Profinet网关承担着协议翻译官的角色。以XD-MDPN100型号为例&#xff0c;其本质是将RS485设备的串口数据封装为Profi…

《C++ string 完全指南:string的模拟实现》

string的模拟实现 文章目录string的模拟实现一、浅拷贝和深拷贝1.浅拷贝2.深拷贝3.写时拷贝二、定义string的成员变量三、string的接口实现1.string的默认成员函数&#xff08;1&#xff09;构造函数实现&#xff08;2&#xff09;析构函数实现&#xff08;3&#xff09;拷贝构…

造成服务器内存不足的原因有什么

服务器在日常的运行过程中&#xff0c;会存储大量关于企业重要的数据信息&#xff0c;偶尔会出现内存飙升空间不足的情况&#xff0c;服务器内存作为服务器数据处理和存储的主要空间&#xff0c;异常占用会导致服务器性能降低&#xff0c;影响到企业业务的响应速度&#xff0c;…

JVM、Dalvik、ART垃圾回收机制

一、JVM垃圾回收机制&#xff08;桌面/服务器端&#xff09;1. 核心算法&#xff1a;分代收集新生代回收&#xff08;Minor GC&#xff09;触发条件&#xff1a;Eden区满时触发算法&#xff1a;复制算法&#xff08;Eden → Survivor区&#xff09;过程&#xff1a;存活对象在S…

数学专业转型数据分析竞争力发展报告

一、核心优势拆解&#xff08;1&#xff09;数学能力与数据分析对应关系数学课程数据分析应用场景比较优势说明概率论假设检验设计能准确判断统计显著性阈值实变函数数据质量评估异常值检测的严格性更高线性代数特征工程构建矩阵运算优化模型训练效率&#xff08;2&#xff09;…