資源簡介
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
???????????????
評論
共有 條評論