图像识别基础认识
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import cv2
%matplotlib inline
读取图像
img = cv2.imread('shuzi.png')
# 显示图像
cv2.imshow('shuzi', img)
# 设置窗口大小
#cv2.resizeWindow('shuzi', 800, 600) # 设置宽为800,高为600
cv2.waitKey(0) # 等待按键
cv2.destroyAllWindows() # 关闭窗口
01 设置感兴趣区域-选择图像的某一部分进行进一步处理
def roi(img,x,y,weight,height):roi = img[y:y+height,x:x+weight]return roi
x,y,w,h = 100, 100, 200, 200 #取图像左上角点
roi = roi(img,x,y,w,h)
cv2.imshow('roi',roi)
cv2.waitKey(0)
cv2.destroyAllWindows()
02 边界填充
cv2.copyMakeBorder() 函数进行边界填充。这个函数允许你在图像的四周添加边框,边框可以是不同的颜色或样式。
cv2.copyMakeBorder(img, top, bottom, left, right, border_type, value=value)
cv2.BORDER_CONSTANT(使用常量值填充边界)/cv2.BORDER_REPLICATE(用边缘的像素值填充边界)/cv2.BORDER_REFLECT(边界填充采用反射的方式)/cv2.BORDER_REFLECT_101(反射区域不包括边缘像素)/cv2.BORDER_WRAP(采用环绕方式填充边界)/cv2.BORDER_TRANSPARENT(用于透明图像的边界填充)
img1 = cv2.imread('dog.jpg')
padding_constant = cv2.copyMakeBorder(img1,50,50,50,50,borderType=cv2.BORDER_CONSTANT,value=(200, 255,65) )
padding_replicate = cv2.copyMakeBorder(img1,50,50,50,50,borderType=cv2.BORDER_REPLICATE)
padding_reflect = cv2.copyMakeBorder(img1,50,50,50,50,borderType=cv2.BORDER_REFLECT)
padding_reflect_101 = cv2.copyMakeBorder(img1,50,50,50,50,borderType=cv2.BORDER_REFLECT_101 )
padding_wrap = cv2.copyMakeBorder(img1,50,50,50,50,borderType=cv2.BORDER_WRAP )
combined_image1 = np.hstack((padding_constant, padding_replicate, padding_reflect))
cv2.imshow('padding_img',combined_image1)
cv2.waitKey(0)
cv2.destroyAllWindows()
combined_image2 = np.hstack((padding_constant, padding_reflect_101, padding_wrap))
cv2.imshow('padding_img2',combined_image2)
cv2.waitKey(0)
cv2.destroyAllWindows()
03 数值计算
cv2.add(加法),cv2.subtract(减法)-加可能导致饱和(超过255)会截断到255。减可能会变为负值(会被截断为0),这通常是背景减除的效果。
addWeighted(img1, alpha, img2, beta, 0)其中0为偏移量
import cv2
import numpy as np
img1 = cv2.imread('dog.jpg')
img2 = cv2.imread('color.png')
img1 = cv2.resize(img1,(500, 500))
img2 = cv2.resize(img2,(500, 500))
#图像加法
add_img = cv2.add(img1,img2)
zong1 = np.hstack((img1,img2,add_img))
cv2.imshow('zong1',zong1)
cv2.waitKey(0)
cv2.destroyAllWindows()#图像减法
sub_image = cv2.subtract(img1, img2)
zong2 = np.hstack((img1,img2,sub_image))
cv2.imshow('zong2',zong2)
cv2.waitKey(0)
cv2.destroyAllWindows()# 图像加权融合
alpha = 0.5 # 权重
beta = 1.0 - alpha
weighted_image = cv2.addWeighted(img1, alpha, img2, beta, 0)
zong3= np.hstack((img1,img2,weighted_image))
cv2.imshow('zong3',zong3)
cv2.waitKey(0)
cv2.destroyAllWindows()
04 图像阈值 -将图像转换为二值图像或减少图像的灰度级数
阈值化的基本思路是:如果像素值大于阈值,则将其设置为最大值(通常是255,表示白色)。如果像素值小于或等于阈值,则将其设置为0(表示黑色)。
常见阈值化方法:全局阈值、自适应阈值、多阈值
常用阈值化类型:cv2.THRESH_BINARY(大于阈值则为255,否则为0)、cv2.THRESH_BINARY_INV(小于阈值则为255,否则为0)、cv2.THRESH_TRUNC(大于阈值的像素值被截断为阈值。)、cv2.THRESH_TOZERO(小于阈值的像素值设置为0,大于阈值的值保持不变。)、cv2.THRESH_TOZERO_INV(大于阈值的像素值设置为0,小于阈值的值保持不变。)
import cv2
import numpy as np
img = cv2.imread('dog.jpg')
threshold_value=180
# 全局阈值化
_, binary_image1 = cv2.threshold(img, threshold_value, 255, cv2.THRESH_BINARY)
zong1= np.hstack((img,binary_image1))
cv2.imshow('zong1',zong1)
cv2.waitKey(0)
cv2.destroyAllWindows()_, binary_image2 = cv2.threshold(img, threshold_value, 255, cv2.THRESH_BINARY_INV)
zong2= np.hstack((img,binary_image2))
cv2.imshow('zong2',zong2)
cv2.waitKey(0)
cv2.destroyAllWindows(
相关文章:
图像识别基础认识
import numpy as np import pandas as pd import matplotlib.pyplot as plt import cv2 %matplotlib inline读取图像 img = cv2.imread(shuzi.png) # 显示图像 cv2.imshow(shuzi, img) # 设置窗口大小 #cv2.resizeWindow(shuzi, 800, 600) # 设置宽为800,高为600 cv2.waitKe…...
使用 OpenCV 读取和显示图像与视频
概述 OpenCV 是一个强大的计算机视觉库,广泛应用于图像处理和视频处理等领域。本文将详细介绍如何使用 OpenCV 在 Python 中读取和显示图像以及视频,并通过具体的代码示例来展示整个过程。 环境准备 在开始之前,请确保已经安装了 OpenCV 库…...
【1】Elasticsearch 30分钟快速入门
文章目录 一、Elasticsearch 基本概念及工作原理(一)基本概念(二)工作原理二、Elasticsearch 原生 RESTful 方式的增删改查(一)创建索引(二)插入文档(三)查询文档(四)更新文档(五)删除文档(六)删除索引三、Python SDK 实现增删改查(一)安装 Elasticsearch Py…...

教材管理系统设计与实现
教材管理系统设计与实现 1. 系统概述 教材管理系统是一个基于PHP和SQL的Web应用程序,旨在为学校提供一个高效的教材管理平台。该系统可以帮助管理员录入教材信息、教师查询和申请教材、学生查询教材信息,提高教材管理的效率和透明度。 2. 技术栈 前端…...

软考(中级-软件设计师)数据库篇(1101)
第6章 数据库系统基础知识 一、基本概念 1、数据库 数据库(Database ,DB)是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和扩展…...

安装nscd及glibc包冲突降级【centos7】
安装nscd及glibc包冲突降级【centos7】 一、查看当前glibc版本二、查找可用的glibc版本三、备份系统和数据四、降级glibc五、验证降级是否成功六、解决其他依赖问题七、测试和验证八、考虑使用容器技术endl [08:41:07 rootcentos7 ~]# yum -y install nscd Loaded plugins: fas…...

Qt字符编码
目前字符编码有以下几种: 1、UTF-8 UTF-8编码是Unicode字符集的一种编码方式(CEF),其特点是使用变长字节数(即变长码元序列、变宽码元序列)来编码。一般是1到4个字节,当然,也可以更长。 2、UTF-16 UTF-16是Unicode字符编码五层次…...

Ubuntu用docker安装AWVS和Nessus(含破解)
Ubuntu安装AWVS(更多搜索:超详细Ubuntu用docker安装AWVS和Nessus) 首先安装docker,通过dockers镜像安装很方便,且很快;Docker及Docker-Compose-安装教程。 1.通过docker search awvs命令查看镜像; docker search awvs…...

tauri开发中如果取消了默认的菜单项,复制黏贴撤销等功能也就没有了,解决办法
取消默认的菜单项:清除tauri默认的菜单项,让顶部的菜单menu不显示-CSDN博客 就是通过配置空菜单,让菜单不显示,但是这个引发的问题就是复制黏贴撤销等功能也就没有了,解决办法: 新增加编辑下的子菜单&…...

HNU-小学期-专业综合设计
写在前面 选题:大数据技术-智慧交通预测系统 项目github地址(如果有用麻烦点个star与follow):https://github.com/wolfvoid/HNU-ITPS (全部代码以及如何部署参见README) 项目报告:如下&…...

Linux安装es和kibana
安装Elasticsearch 参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html#targz-enable-indices 基本步骤下载包,解压,官网提示: wget https://artifacts.elastic.co/downloads/elasticsearc…...

第二十六章 Vue之在当前组件范围内获取dom元素和组件实例
目录 一、概述 二、获取dom 2.1. 具体步骤 2.2. 完整代码 2.2.1. main.js 2.2.2. App.vue 2.3. BaseChart.vue 三、获取组件实例 3.1. 具体步骤 3.2. 完整代码 3.2.1. main.js 3.2.2. App.vue 3.2.3. BaseForm.vue 3.3. 运行效果 一、概述 我们过去在想要获取一…...

Markdown 区块
再段落开头,使用>符号,在符号后面按空格,效果图是最左侧有一条灰色的粗线,这是一级区块 二级区块和三级区块只需要在一级的后面加>符号,就可以进入二级区块,效果如下图 还可以在区块内部签到无序列表…...

ctf文件上传题小总结与记录
解题思路:先看中间件,文件上传点(字典扫描,会员中心),绕过/验证(黑名单,白名单),解析漏洞,cms,编辑器,最新cve 文件上传漏…...
什么是QAM
什么是调制呢? 调制就是把信号形式转换成适合在信道中传输的一个过程。可分为基带调制和载波调制。我们这里所说的调制都是载波调制。 什么是载波调制呢? 就是把调制信号骑到载波上,方法就是用调制信号去控制载波的参数,使载波…...

GraphQL 与 Elasticsearch 相遇:使用 Hasura DDN 构建可扩展、支持 AI 的应用程序
作者:来自 Elastic Praveen Durairaju GraphQL 提供了一种高效且灵活的数据查询方式。本博客将解释 Hasura DDN 如何与 Elasticsearch 配合使用,以实现高性能和元数据驱动的数据访问。 此示例的代码和设置可在此 GitHub 存储库 - elasticsearch-subgraph…...
面试题整理 3
总结了某公司面试遇到的值得整理记录的面试题,比较侧重于Redis方面。 目录 Redis持久化配置 RDB AOF Redis rdb日志文件路径编辑 命令行参数设置 Redis事务 Redis事务介绍 Redis事务阶段 watch监听 Mysql隔离级别 1.READ UNCOMMITTED 2.READ COMMITTED …...

数据结构(Java)—— 认识泛型
1. 包装类 在学习泛型前我们需要先了解一下包装类 在 Java 中,由于基本类型不是继承自 Object ,为了在泛型代码中可以支持基本类型, Java 给每个基本类型都对应了一个包装类型。 1.1 基本数据类型和对应的包装类 基本数据类型包装类byteByt…...
处理后的视频如何加上音频信息?
总方案:原来模型对图像进行每帧处理,保留后的视频自然失去了audio信息,因此先用ffmpeg处理得到audio,原输出video加上audio即可,也采用ffmpeg处理。 imageio库用于读取和写入视频文件,并且你正在使用img_cartoon模型处理每一帧图像。然而,这段代码只处理了视频的图像部…...
02LangChain 实战课——安装入门
LangChain安装入门 一、大语言模型简介 大语言模型是利用深度学习技术,尤其是神经网络,来理解和生成人类语言的人工智能模型。这些模型因其庞大的参数数量而得名,能够理解和生成复杂的语言模式。它们通过预测下一个词来训练,基于…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...