当前位置: 首页 > news >正文

【深度学习图像】拼接图的切分

用户常常将多张图拼成一张图。

如果将这张图拆为多个子图,下面是一种opencv的办法,后面要训练一个模型来识别边缘更为准确。

import osimport cv2
import numpy as npdef detect_lines(image_path):# 读取图片image = cv2.imread(image_path)if image is None:raise ValueError("无法读取图片,请检查路径是否正确")# 将图片转为灰度图gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用Canny边缘检测edges = cv2.Canny(gray, 20, 240, apertureSize=3)# 使用霍夫变换检测线段lines = cv2.HoughLinesP(edges, 1, np.pi / 180, threshold=100, minLineLength=300, maxLineGap=10)chuizhi = []shuiping = []# 筛选出水平和垂直的线段并绘制if lines is not None:for line in lines:for x1, y1, x2, y2 in line:if abs(y1 - y2) < 5:  # 水平线段shuiping.append((x1, y1, x2, y2))elif abs(x1 - x2) < 5:chuizhi.append((x1, y1, x2, y2))if len(shuiping) == 0 and len(chuizhi) == 0:return [image]# 拆图ys = []for x1, y1, x2, y2 in shuiping:ys.append(y1)ys.append(y2)ys.sort()ys = [0] + ys + [image.shape[0]]y_images = []for i in range(len(ys) - 1):if ys[i + 1] - ys[i] < 100:continuey_images.append(image[ys[i]:ys[i + 1], :])xs = []for x1, y1, x2, y2 in chuizhi:xs.append(x1)xs.append(x2)xs.sort()xs = [0] + xs + [image.shape[1]]x_images = []for i in range(len(xs) - 1):if xs[i + 1] - xs[i] < 100:continuefor y_image in y_images:x_images.append(y_image[:, xs[i]:xs[i + 1]])# 去除宽高比超过5的x_images = [x_image for x_image in x_images ifx_image.shape[0] / x_image.shape[1] < 5 or x_image.shape[1] / x_image.shape[0] < 5]return x_imagesdef listPathAllfiles(dirname):result = []for maindir, subdir, file_name_list in os.walk(dirname):for filename in file_name_list:apath = os.path.join(maindir, filename)result.append(apath)return resultsrc = r"C:\Users\Administrator\Pictures\girl_no_train\mangguo"
dst = r"C:\Users\Administrator\Pictures\girl_no_train\mangguo_dst"
if not os.path.exists(dst):os.makedirs(dst)
files = listPathAllfiles(src)
for file in files:x_images = detect_lines(file)for i, x_image in enumerate(x_images):cv2.imwrite(f"{dst}/{os.path.basename(file)}_{i}.jpg", x_image)

相关文章:

【深度学习图像】拼接图的切分

用户常常将多张图拼成一张图。 如果将这张图拆为多个子图&#xff0c;下面是一种opencv的办法&#xff0c;后面要训练一个模型来识别边缘更为准确。 import osimport cv2 import numpy as npdef detect_lines(image_path):# 读取图片image cv2.imread(image_path)if image i…...

Covalent(CXT)运营商网络规模扩大 42%,以满足激增的需求

Covalent Network&#xff08;CXT&#xff09;是领先的人工智能模块化数据基础设施&#xff0c;网络集成了超过 230 条链并积累了数千名客户&#xff0c;目前 Covalent Network&#xff08;CXT&#xff09;网络迎来了五位新运营商的加入&#xff0c;包括 Graphyte Labs、PierTw…...

Java 集合框架:HashMap 的介绍、使用、原理与源码解析

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 020 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…...

单周期CPU(三)译码模块(minisys)(verilog)(vivado)

timescale 1ns / 1ps //module Idecode32 (input reset,input clock,output [31:0] read_data_1, // 输出的第一操作数output [31:0] read_data_2, // 输出的第二操作数input [31:0] Instruction, // 取指单元来的指令input [31:0] …...

理想化相机模型的相机内参

文章目录 理想化相机模型的相机内参计算1. 相机内参定义2. 根据视角和图像分辨率计算相机内参2.1 计算焦距 fx 和 fy2.2 计算主点 cx 和 cy3. 示例计算3.1 计算 fx3.2 假设 fy = fx(因为没有垂直视场角的信息)3.3 计算主点4. 相机内参矩阵理想化相机模型的相机内参计算 在理…...

【数据脱敏】⭐️SpringBoot 整合 Jackson 实现隐私数据加密

目录 &#x1f378;前言 &#x1f37b;一、Jackson 序列化库 &#x1f37a;二、方案实践 2.1 环境准备 2.2 依赖引入 2.3 代码编写 &#x1f49e;️三、接口测试 &#x1f379;四、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;最近也是很忙啊&#xff0c;上次的文章…...

骑砍2霸主MOD开发(18)-多人联机模式开发环境搭建

一.多人联机模式网络拓扑图 二.专用服务器搭建(DedicatedServer) <1.Token生成(用于LobbyServer的校验): 进入多人联机大厅,ALT~打开RGL控制台,输入customserver.gettoken Token文件路径:C:\Users\taohu\Documents\Mount and Blade II Bannerlord\Tokens <2.启动专用服务…...

【HZHY-AI300G智能盒试用连载体验】在华为IoTDA平台上建立设备

目录 华为IoTDA平台 注册IoTDA实例 创建产品 添加设备 本文首发于&#xff1a;【HZHY-AI300G智能盒试用连载体验】 智能工业互联网网关 - 北京合众恒跃科技有限公司 - 电子技术论坛 - 广受欢迎的专业电子论坛! 在上一篇博文中介绍了如何在HZHY-AI300G智能盒创建南向设备&a…...

【LLM】-05-提示工程-部署Langchain-Chat

目录 1、软硬件要求 1.1、软件要求 1.2、硬件要求 1.3、个人配置参考 2、创建cuda环境 3、下载源码及模型 4、配置文件修改 5、初始化知识库 5.1、训练自己的知识库 6、启动 7、API接口调用 7.1、使用openai 参考官方wiki&#xff0c;本文以Ubuntu20.04_x64&#xf…...

【漏洞复现】Next.js框架存在SSRF漏洞(CVE-2024-34351)

0x01 产品简介 ZEIT Next.js是ZEIT公司的一款基于Vue.js、Node.js、Webpack和Babel.js的开源Web应用框架。 0x02 漏洞概述 ZEIT Next.js 13.4版本至14.1.1之前版本存在代码问题漏洞&#xff0c;该漏洞源于存在服务器端请求伪造 (SSRF) 漏洞 0x03 搜索引擎 body"/_nex…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 小区小朋友统计(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…...

Vuex看这一篇就够了

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

Kafka集群创建

这样就创建好了docker4个镜像&#xff0c;三个node&#xff0c;一个manager。 其中&#xff0c;浏览器访问的是manager对应的那个url&#xff0c;直接在里面加Cluster...

2024.7.22 作业

1.将双向链表和循环链表自己实现一遍&#xff0c;至少要实现创建、增、删、改、查、销毁工作 循环链表 looplinklist.h #ifndef LOOPLINKLIST_H #define LOOPLINKLIST_H#include <myhead.h>typedef int datatype;typedef struct Node {union {int len;datatype data;}…...

如何使用aiohttp或requests-async等库并发地执行多个HTTP请求

在Python中&#xff0c;要并发地执行多个HTTP请求&#xff0c;可以使用aiohttp这样的异步HTTP客户端库&#xff0c;因为它支持异步编程&#xff0c;能够显著提高IO密集型任务的性能&#xff0c;比如网络请求。requests-async并不是一个广泛认知的库&#xff08;虽然可能存在类似…...

Golang | Leetcode Golang题解之第257题二叉树的所有路径

题目&#xff1a; 题解&#xff1a; func binaryTreePaths(root *TreeNode) []string {paths : []string{}if root nil {return paths}nodeQueue : []*TreeNode{}pathQueue : []string{}nodeQueue append(nodeQueue, root)pathQueue append(pathQueue, strconv.Itoa(root.V…...

关于css中flex布局垂直居中失效问题的原因

项目中遇到用flex进行页面布局后&#xff0c;使用上下居中设置&#xff1a;align-item: center; 目标效果如下&#xff1a; 但是失效&#xff0c;不起作用&#xff0c;如下图所示&#xff1a; 各种排查过后发现设置了子模块 align-self 属性&#xff0c;这会覆盖容器上的 al…...

用Redisson写一个库存扣减的方法

使用Redisson来处理库存操作可以确保在高并发环境下库存数据的一致性和完整性。以下是使用Redisson实现库存管理的一些通用方法&#xff0c;包括获取库存、扣减库存、设置库存等。我们将使用Redisson的ReentrantLock来确保并发安全。 首先&#xff0c;确保你已经正确设置了Red…...

第2节课:文本内容与格式化——HTML中的文本处理技巧

目录 文本内容与格式化&#xff1a;段落和标题&#xff1a;构建文本基础段落 <p>标题 <h1> 到 <h6> 格式化&#xff1a;强调和样式加粗 <b>斜体 <i>下划线 <u> 列表&#xff1a;组织内容无序列表 <ul>有序列表 <ol>定义列表 &…...

temu平台电池/锂电池UN38.3资质合规解析

UN38.3资质合规解析 为满足相关法律法规和商品运输安全需求含锂电池商品需要提供对应的UN38.3资质。截至7月29日&#xff0c;相关类目下UN38.3资质待上传或上传失败的商品可能面临下架。 -01什么是UN38.3- 1&#xff09;UN38.3是指由联合国危险货物运输专家委员会编写的《试验…...

SEO_详解SEO核心关键词的研究与布局方法(455 )

<h2>SEO核心关键词的研究与布局方法详解</h2> <p>在当前的互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为了各个企业和网站提升网络曝光率、吸引更多流量的重要手段。其中&#xff0c;核心关键词的研究与布局是SEO的重要组成部分。…...

USB设备安全弹出工具终极指南:告别Windows繁琐移除,一键搞定所有存储设备

USB设备安全弹出工具终极指南&#xff1a;告别Windows繁琐移除&#xff0c;一键搞定所有存储设备 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quic…...

STM32F103测风扇转速,除了输入捕获,你还可以试试这个更省资源的“数脉冲”法

STM32F103风扇测速实战&#xff1a;输入捕获与数脉冲法的资源博弈 在嵌入式开发中&#xff0c;风扇转速监测是个看似简单却暗藏玄机的任务。面对STM32F103这类资源有限的Cortex-M3内核单片机&#xff0c;如何在保证功能的前提下最大化硬件利用率&#xff1f;传统输入捕获法虽精…...

Uvicorn连接池配置:优化数据库连接性能的完整指南

Uvicorn连接池配置&#xff1a;优化数据库连接性能的完整指南 【免费下载链接】uvicorn An ASGI web server, for Python. &#x1f984; 项目地址: https://gitcode.com/GitHub_Trending/uv/uvicorn Uvicorn作为一款高性能的ASGI web服务器&#xff0c;在Python Web应用…...

LabelMe高级应用:如何利用AI辅助标注提升效率300%

LabelMe高级应用&#xff1a;如何利用AI辅助标注提升效率300% LabelMe是一款强大的图像标注工具&#xff0c;支持多边形、矩形、圆形、线条、点和图像级标记等多种标注方式。对于AI训练数据准备工作而言&#xff0c;高效的标注工具能显著提升工作流效率。本文将详细介绍如何利…...

vscode-drawio扩展依赖更新:安全高效地管理第三方库

vscode-drawio扩展依赖更新&#xff1a;安全高效地管理第三方库 【免费下载链接】vscode-drawio This unofficial extension integrates Draw.io (also known as diagrams.net) into VS Code. 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-drawio vscode-drawio…...

形态学操作进阶:手把手教你设计Hit-or-Miss内核检测十字/直角结构

形态学操作进阶&#xff1a;手把手教你设计Hit-or-Miss内核检测十字/直角结构 在计算机视觉领域&#xff0c;形态学操作一直是图像处理中不可或缺的技术手段。其中&#xff0c;Hit-or-Miss变换作为一种高级形态学操作&#xff0c;能够精准定位二值图像中的特定结构模式。想象一…...

3大核心能力:黑苹果爱好者的系统构建指南

3大核心能力&#xff1a;黑苹果爱好者的系统构建指南 【免费下载链接】Hackintosh 国光的黑苹果安装教程&#xff1a;手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 评估硬件兼容性 为什么同样的硬件配置&#xff0c;别人的黑苹果…...

Python实现简易可信度推理引擎:用20行代码复现经典CF模型

Python实现简易可信度推理引擎&#xff1a;用20行代码复现经典CF模型 在金融风控领域&#xff0c;规则引擎的可信度评估直接影响着决策的准确性。想象一下&#xff0c;当系统需要同时处理多条相互矛盾的交易警报时&#xff0c;如何量化每条证据的可信程度&#xff1f;这正是可…...

League-Toolkit:英雄联盟玩家的智能游戏助手

League-Toolkit&#xff1a;英雄联盟玩家的智能游戏助手 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基于…...