- 博客(70)
- 资源 (2)
- 收藏
- 关注
原创 定制静物商品背景及自定义抠图
请记住,真正高质量的抠图,尤其是细节如头发等复杂部分的抠图,可能需要更专业的图像处理工具或服务。为了完成这个任务,我们可以使用OpenCV进行简单的背景替换,对于复杂场景可以使用深度学习模型,比如removebg,用于提取前景。在这个示例中,我们将展示如何使用OpenCV来简化地替换背景,然后再简要介绍如何利用removebg API进行更高级的背景移除。对于复杂的背景,你可能更倾向于使用专门的工具或服务来处理,removebg是这样一个服务,它提供了一个能够自动去除图片背景的API。
2024-09-03 22:36:17 401
原创 更改图片中的部分颜色及修改图片的背景色
色调通道的数值范围通常是 0 到 179(0-360 度的一半),代表不同的颜色。这个方法适用于大部分简单的颜色替换场景,但如果场景较为复杂(比如颜色在图像中分布不均匀或者有多种亮度和饱和度的情况),可能需要更复杂的方法。高质量的背景替换,特别是在背景和前景颜色接近或者背景颜色不均匀的情况下,通常需要更高级的图像处理技术,如图像分割网络(例如DeepLab)或者使用AI模型。如果你想使用 Pillow 库来实现相同的功能,也可以进行类似的步骤,只是使用 Pillow 的方法来转换图像和访问不同的通道数据。
2024-08-30 21:50:57 995
原创 图片去噪及边缘检测
一:在Python中,图片去噪可以通过不同的方法实现,这些方法包括使用简单的滤波技术到更复杂的算法,比如高斯模糊、中值滤波、非局部均值去噪(Non-local Means Denoising)等。Sobel边缘检测是基于Sobel算子的边缘检测方法,它通过计算图像灰度的空间梯度来检测边缘区域。二:在Python中,进行图片边缘检测常用的方法是使用OpenCV库,它提供了多种边缘检测算法,如Canny边缘检测、Sobel边缘检测、Laplacian边缘检测等。ksize: 核的大小。默认值为False。
2024-08-27 21:46:53 1330
原创 Pillow和OpenCV库生产镜像及图片虚拟化处理
在使用OpenCV时,cv2.flip()函数的第二个参数指定翻转轴,1表示沿着y轴翻转(水平翻转),0表示沿着x轴翻转(垂直翻转),-1则表示同时沿x和y轴翻转(即沿对角线翻转)。是将图像转换为一种艺术风格,比如使图片看起来像是通过某种艺术手法(如油画、素描等)制作的,那么这可以通过使用一些高级的图像处理技术来实现。flip()函数的第二个参数控制翻转模式,其中1表示水平翻转,0表示垂直翻转。颜色强度除法:使用原始灰度图和模糊的反色图像进行颜色强度的除法操作,以突出边缘和细节,创建类似手绘的效果。
2024-08-26 23:25:25 469
原创 Pillow和OpenCV对图片进行高亮及裁剪处理
在OpenCV中,裁剪区域是通过行和列的索引来指定的,使用[y_start:y_end, x_start:x_end]的方式,其中坐标原点同样在图片的左上角,但需要注意的是,OpenCV使用的是(y, x)的顺序而非(x, y)。当使用Pillow调整亮度时,enhance方法的参数factor工作在一个相对亮度的级别上,它不是直接加到像素上的值,而是一个相乘的因子。在Pillow中,裁剪区域是通过(left, upper, right, lower)来指定的,其中坐标原点在图片的左上角。
2024-08-24 19:38:18 996
原创 根据哈希值或者特征值判断图片是否相同
detectAndCompute 方法结合了特征检测和描述符计算两个步骤,可以在图像中检测出特征点并计算这些特征点的描述符。ORB(Oriented FAST and Rotated BRIEF)是一种结合了 FAST 特征检测器和 BRIEF 描述符的特征提取算法,具有旋转不变性和尺度不变性,适用于图像特征匹配、目标检测等任务。接着使用 ORB 对象的 detectAndCompute() 方法检测图像中的特征点并计算描述符,最后将特征点绘制在图像上并显示出来。
2024-08-09 22:24:25 866
原创 判断单张图片是否存在重叠部分的常见方法
每个点的坐标代表模板图像左上角在原始图像中的位置。通常,如果在图像中找到了多个匹配区域,可能表明图像中存在多个相似或相同的模板,这有时候也可以理解为一种重叠,尤其是当模板小于或接近待检测的物体大小时。为了使用LBP分析重叠,您可能需要结合其他图像处理步骤,例如分割图像中可能重叠的区域,然后在这些区域使用LBP来比较它们的纹理模式。这种方法对于寻找不同尺度或旋转的模板可能不是很有效,因为 matchTemplate 仅仅检查位置的匹配,但对于没有旋转和尺度变化的图像来说,它是一个非常直接的解决方案。
2024-01-21 20:27:54 1865
原创 Python-实现高并发的常见方式
但是,由于Python的全局解释器锁(GIL),同一时刻只允许一个线程执行Python字节码。例如,对于I/O密集型应用,使用异步I/O(如asyncio)或者Tornado这样的非阻塞网络框架会是个不错的选择;Python 3.4 引入的 asyncio 模块允许进行异步编程,你可以使用 async 和 await 关键字编写看起来像同步代码的异步代码。它是基于事件循环的,适合I/O密集型任务,能够在单个线程内实现高并发。与线程不同的是,协程的调度完全由程序控制,协程之间的切换不需要上下文切换的开销。
2024-01-05 22:21:25 849
原创 业务测试常见问题(一)
多维度测试:不同的测试覆盖可以从不同角度来考虑。制定详细的测试计划和测试用例:在测试之前,制定一份可行的测试计划,确保测试人员充分了解测试的内容和目的,并根据测试计划制定详细的测试用例,以减少测试人员在测试中的疑惑。数据库测试:在进行业务测试时,可以通过测试数据库来获取随机测试数据或者通过SQL语句进行数据库的查询、更新操作等,以增加数据的复杂性和范围,更好地测试业务。兼容性维度:考虑需求的兼容性,例如系统的兼容性、浏览器的兼容性、设备的兼容性等,以保证系统在多种不同的环境中的稳定性和可操作性。
2023-10-08 22:18:12 676
原创 实现将一张图片中的目标图片抠出来
这个错误通常是由于匹配模板图像的深度不正确导致的。匹配函数cv2.matchTemplate()的模板图像应该是单通道灰度图像或3通道BGR图像。如果是单通道灰度图像,则深度应为CV_8U,如果是BGR图像,则深度应为CV_8U或CV_32F。解决方法是确保你的模板图像是一个单通道灰度图像或3通道BGR图像,并将深度相应地设置为CV_8U或CV_32F。
2023-09-28 19:46:30 719
原创 uwsgi协议-并发操作时写入数据到mongodb或者mysql失败
原因: SQLAlchemy, MongoEngine实例在整个app中只创建了一个,lazy-apps=False时的启动代码,各种模块都只创建了一遍,然后才创建worker.解决办法: 设置lazy-apps=true, 因为设置为True时启动代码,先创建worker,然后各种模块都分别加载了一遍,每个worker的环境是独立的。在并发时,SQLAlchemy,MongoEngine在数据连接时会报错;
2022-09-16 17:55:12 344
原创 Python-使用进程池提高代码执行速度
使用进程池的方式提高代码执行速度通过使用进程池的方式并获取被执行函数的返回值from multiprocessing.pool import Poolfrom multiprocessing import Manager def get_info(context_params, return_dict, num): """ 获取处理之后的信息 @return: """ test_result = [] test_result= RecFa
2022-02-23 19:48:45 592
原创 Uwsgi+nginx部署flask工程
使用uwsgi+nginx能够快速部署flask代码工程基础模块安装1:下载uwsgi服务模块pip install uwsgi2:创建软连接ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi安装Nginx1:下载压缩包wget -c https://nginx.org/download/nginx-1.12.2.tar.gz2:解压:tar -zxvf nginx-1.12.2编译:./cnfigure安装:make &
2021-11-09 16:27:53 3409
原创 python-提取GIF动图中的每一帧图片及将图片合成GIF动图
一: 提取GIF动图中的每一帧图片from PIL import Imageimport osdef get_imgs(): """ 提取动图中的每一帧图片,并保存到文件夹中 """ gif_path = os.path.join(os.getcwd(), "image_dir", "1.gif") new_path = os.path.join(os.getcwd(), "image_dir", "gif_img") gif = Image.open
2021-09-30 09:57:25 4097
原创 FastAPI-ORM的方式操作Mongodb数据库
# -*- coding: utf-8 -*-# @Time : 2021/7/23 10:19# @Author : # @File : app.py# @Software: PyCharmfrom fastapi import FastAPI, HTTPExceptionfrom motor.motor_asyncio import AsyncIOMotorClientfrom bson.objectid import ObjectIdfrom pydantic impor
2021-07-23 11:45:56 2663
原创 Flask-使用cron表达式添加定时任务
# service.pyfrom flask_apscheduler import APSchedulerfrom apscheduler.triggers.cron import CronTriggerimport uuidscheduler = APScheduler()class CornTask(): ......... @staticmethod def add_task(request): # 添加定时任务 req_data = reques
2021-07-15 19:50:36 1317
原创 CV2-计算两张图片的相似度
import cv2# 方式一def img_similarity(img1_path, img2_path): """ # 自定义计算两个图片相似度函数 :param img1_path: 图片1路径 :param img2_path: 图片2路径 :return: 图片相似度 """ img1 = cv2.imread(img1_path, cv2.IMREAD_GRAYSCALE) img2 = cv2.imread(img2_pa
2021-07-14 16:06:11 3774
原创 Python-在字典的指定位置添加键值对
from collections import OrderedDict# 方式一def modify_dict_1(source_dict, new_key, old_key, value): """ 将dict初始化为OrderedDict。创建一个新的空OrderedDict,遍历原始字典的所有键,并在键名匹配时插入before/after """ new_dict = OrderedDict() for k, v in source_dict.items(
2021-07-14 14:36:47 6453
原创 Python-处理时间
import timeimport arrowclass TimeHandler(object): @staticmethod def handle_timestamp(time_stamp): # 将13位时间戳转成正常格式时间 time_stamp = float(time_stamp / 1000) time_stamp = time.localtime(time_stamp) time_stamp = time.strftim
2021-07-09 20:40:37 103
原创 Flask-ORM方式操作Mongodb
前言在实际项目中,我们有时需要存储一些json类型的字符串,这种类型的数据写入到关系型数据库,会比较麻烦。一般我们将其写入到非关系型数据库中,例如MongoDB,同样我们也可以用操作关系型数据库的ORM方式操作MongoDB。1: 配置文件的(settings.py)MONGODB_SETTINGS = [{'db': 'api_params', 'host': MONGO_DB, 'port': 27017, "connect": True, 'us
2021-07-05 21:50:27 614
原创 Python-提取多维矩阵中的重复数据
对多维矩阵的元素按相同元素个数和此相同元素组成的字典进行提取。 def handler_multiple_lists(lists): """ 提出多维矩阵中重复的元素 param lists : 多个列表组成的矩阵, [[1, 2, 3], [2, 3, 4], [4, 5, 6]] return : 重复数据组成的字段,键为重复的数据,值为出现的次数 例如 {"1": 10, "2": 4,......} """
2021-05-13 22:56:44 1270
原创 Python保存数据超过10W的处理方式
在实际操作中,存储excel的数量超过一个sheet时的解决办法: def create_source_excel(params, goods_ids, counts, file): """ 生成源数据的excel文件 """ quotient, remainder = divmod(len(params), 100000) cycle_number = quotient + 1 if remainder else qu
2021-05-13 22:40:46 580
原创 Django基础(二)
本章节主要讲Django框架的请求与响应请求Request1: url路径参数在定义路由url时,可以使用正则表达式提取参数的方法从url中获取参数,Django会将直接提取的参数直接传递到视图参数中。1.1: 未命名参数按定义顺序传递url(r"^weather/([a-z]+)/(\d{4})/$", views.weather)def weather(request, city, year): print("city=%s"%city) print("year=%s"%year) r
2020-12-27 15:19:16 112
原创 Django基础(一)
Django使用python语言写的开源web框架,并遵循MVC设计;主要目的是简便,快速的开发数据驱动网站,它强调代码复用,多个组件可以方便的以插件形式服务整个框架。特点1:Django是一个重量级框架,对比Flask框架,Django原生提供了众多的功能组件。提供项目工程管理的自动化脚本工具数据库支持ORM模板,表单Admin管理站点,文件管理认证权限,session机制,缓存2:MVT模式有一种程序设计模式叫MVC,其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展
2020-12-26 19:52:49 209
原创 Scrapy(三):使用Selector提取数据(三)
这个章节介绍除Xpath外另一种常用的数据提取方式: CSS选择器CSS即层叠样式表,其选择器是一种用来确定HTML文档中某部分位置的语言,相对于Xpath更简单一些,但功能不如xpath强大。通过以下例子展示css选择器的使用。from scrapy.selector import Selectorfrom scrapy.http import HtmlResponsebody = """<!DOCTYPE html><html> <head> &
2020-12-20 16:50:14 136
原创 Scrapy(三):使用Selector提取数据(二)
在实际开发中,不需要手动创建Selector对象,在第一次访问一个Response对象的selector属性时,Response对象内部会以自身为参数创建Selector对象,并将该Selector对象缓存,以便下次使用。Scrapy源码中的相关实现如下:@propertydef selector(self): from scrapy.selector import Selector if self._cached_selector is None: self._cach
2020-12-20 16:15:57 321
原创 Scrapy(三):使用Selector提取数据(一)
Selector对象从页面上提取数据的核心是HTTP文本解析,在Python中常用以下模块进行处理:BeautifulSoup: 非常流行的HTTP解析库,API简洁易用,但解析速度较慢lxml: 由C语言编写的lxml解析库,解析速度快,API相对比较复杂Scrapy综合上述两者优点实现Selector类,基于lxml构建,简化了API接口,在Scrapy中使用Selector对象提取页面上的数据,使用时先通过Xpath或Css选择器中页面要提取的数据,然后进行提取。下面详细介绍Selector对
2020-12-13 16:15:48 1115
转载 Kafka简介,安装及简单的操作
kafka的介绍Kafka 是分布式发布-订阅消息系统,即,kafka是一种分布式的消息队列工具。kafka特点a.高吞吐量kafka每秒可以生产约25万消息(50MB),每秒可以处理55万消息(110MB)b.持久化数据存储可进行持久化操作。将消息持久化到磁盘,按顺序读写。据测试按顺序磁盘读写比随机内存写还要快。c.分布式系统易于扩展所有的producer、broker和consumer都会有多个,均为分布式。无需停机就可以添加机器。d.客户端状态维护消息被处理的状态是在consume
2020-10-21 10:26:45 140
原创 Docker简介
Docker是一个客户端-服务器(C/S)架构程序。Docker客户端只需要Docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Docker的组成部分:Container(容器)--------》Image(镜像)-------》repository(仓库)镜像是Docker运行容器的前提,仓库是存放镜像的场所镜像:镜像是静态的,可以被用户分享的文件。和虚拟机类似,需要一个iso镜像才能安装系统,Docker中的镜像也是这个东西,镜像是静态的,不能对其操作,只能pul
2020-10-18 17:05:58 92 1
swagger_json_class_back.py
2020-07-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人