资源简介
python自动抠图(基于cv2)
代码片段和文件信息
# -*- coding: utf-8 -*-
# @Author: haodaquan
# @Date: 2016-12-25 10:13:57
# @Last Modified by: haodaquan
# @Last Modified time: 2016-12-30 16:50:36
import sys
import copy
import cv2
import math
import datetime
# ----------------------------------------------------------------------
# CoreImage: 核心图片类,获取核心图片
# ----------------------------------------------------------------------
class CoreImage(object):
# imageInfo = [imageNameimagePathnewImagePath]
def __init__(self *arg):
imgInfo = arg[0]
cropInfo = arg[1]
# 原图信息
self.imgPath = imgInfo.get(‘imgPath‘ ‘./originalImage/‘)
self.imgName = imgInfo.get(‘imgName‘ ‘image.jpg‘)
# 新图信息
self.newImgPath = cropInfo.get(‘newImgPath‘ ‘./newImage/‘)
self.isBgPure = cropInfo.get(‘isBgPure‘ 0) # 是否纯色背景,0-不是,1-是
self.newWidth = cropInfo.get(‘newWidth‘ 380)
self.newHeight = cropInfo.get(‘newHeight‘ 380)
self.line = cropInfo.get(‘line‘ 1) # 每隔几行扫描一次,建议1,4,8
# 获取图片边缘
def getImgEdge(self):
img = cv2.imread(self.imgPath + self.imgName)
edge = cv2.Canny(img 100 300) # 可以根据实际业务进行调整
# cv2.imwrite(self.newImgPath+‘edge.jpg‘edge)
return [edge img]
# 获取核心图片
def getCoreImg(self):
if (self.isBgPure == 1):
return self.getPureBgCoreImg()
else:
return self.getDefaultBgCoreImg()
# 获取纯色背景核心图片
def getPureBgCoreImg(self):
begin = datetime.datetime.now()
edgeImg = self.getImgEdge()
img_width = edgeImg[1].shape[1]
img_height = edgeImg[1].shape[0]
x0 = 0 # 左上角x
y0 = 0 # 左上角y
x1 = img_width - 1
y1 = img_height - 1
# 左上角X轴
i = j = 0
for i in range(0 img_width self.line):
if (x0 != 0):
break;
for j in range(0 img_height):
if (edgeImg[0][j i] != 0):
x0 = i - self.line
break
# 左上角Y轴
i = j = 0
for i in range(0 img_height self.line):
if (y0 != 0):
break;
for j in range(0 img_width):
if (edgeImg[0][i j] != 0):
y0 = i - self.line
break
# 右下角X轴
i = j = 0
for i in range(0 img_width self.line)[::-1]:
if (x1 != img_width - 1):
break;
for j in range(0 img_height)[::-1]:
if (edgeImg[0][j i] != 0):
x1 = i + self.line
break
# 右下角Y轴
i = j = 0
for i in range(0 img_height self.line)[::-1]:
if (y1 != img_height - 1):
break;
for j in range(0 img_width)[::-1]:
if (edgeImg[0][i j] != 0):
y1 = i + self.line
相关资源
- 计算机视觉 opencv 数数.ipynb
- 自动截屏工具(python源码)
- python摄像头自动识别工业用反色二维
- 模拟自动滑块验证码.py(基于chromed
- Python-直播答题助手自动检测出题搜索
- windows鼠标自动点击py脚本
- abaqus 网格自动划分插件 python语言
- 电力窃漏电用户自动识别 源码
- python3根据模板图片批量自动制作个性
- Python-使用DeepFakes实现YouTube视频自动换
- 测试工程师相关学习视频(包含pyth
- 一些python自动化代码
- Python编程快速上手 让繁琐工作自动化
- selenium webdriver (python)第三版.pdf
- 基于深度学习堆栈自动编码器模型的
- 百度图像自动识别程序
- PTVS 2.2 VS 2013 补充工具 自动提示功能
- 终极自动化测试环境搭建:Selenium+E
- 基于Python的微信自动回复机器人
- python元胞自动机模拟生态环境草羊狼
- 100行Python代码实现自动抢火车票
- 用Python实现一个软件自动升级系统
- 《Selenium自动化测试:基于Python语言》
- Web接口开发与自动化测试-基于Python语
- python接口自动化测试
- 唐诗生成器自动生成
- 《Python自动化编程》源文件
- Selenium自动化框架,python实现
- selenium2python自动化测试.pdf
- webUI自动化测试框架(Python+selenium)
评论
共有 条评论