|
|

楼主 |
发表于 2018-4-9 18:32:13
|
显示全部楼层
本帖最后由 JAY饭 于 2018-4-9 18:38 编辑
主代码,是我copy的,改动了一些,但不知道改的对不对,我真的不能理解它
,看不懂
- import cv2
- import numpy as np
- from matplotlib import pyplot as plt
- img = cv2.imread('timg.jpg')
- mask = np.zeros(img.shape[:2],np.uint8)
- bgdModel = np.zeros((1,65),np.float64)
- fgdModel = np.zeros((1,65),np.float64)
- rect = (100,10,415,471)
- cv2.grabCut(img, mask, rect, bgdModel, fgdModel,5,cv2.GC_INIT_WITH_RECT)
- mask2 = np.where((mask ==2)|(mask==0),0,1).astype('uint8')
- img = img*mask2[:,:,np.newaxis]
- cv2.imwrite('3.jpg',img)#这里讲第一次抠图保存
- newmask = cv2.imread('5.png',0)#这里将上面得到的图片,用蒙版处理后的图层,也就是图3
- # whereever it is marked white (sure foreground), change mask=1
- # whereever it is marked black (sure background), change mask=0
- mask[newmask == 0] = 0
- mask[newmask == 255] = 1
- mask, bgdModel, fgdModel = cv2.grabCut(img,mask,None,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_MASK)
- mask = np.where((mask==2)|(mask==0),0,1).astype('uint8')
- img = img*mask[:,:,np.newaxis]
- plt.imshow(img),plt.colorbar(),plt.show()
复制代码
我自己写的绘制蒙版图层代码,随便划拉的几行,没有加工,因为这个不是重点
- import pygame
- from pygame.locals import *
- import sys
- bg = 255,255,255
- bg1 = 176,196,22
- size = width,hright = 516,481
- screen =pygame.display.set_mode(size)
- clock = pygame.time.Clock()
- img = pygame.image.load('3.jpg').convert_alpha()
- img1 = pygame.Surface(size)
- img1.fill(bg1)
- img1.set_alpha(100)
- pos = img.get_rect()
- w= False
- w1= False
- def write():
- global w,w1
- if w:
- x,y = pygame.mouse.get_pos()
- img1.set_at((x,y),(255,255,255,255))
- img1.set_at((x+1,y),(255,255,255,255))
- img1.set_at((x-1,y),(255,255,255,255))
- img1.set_at((x+2,y),(255,255,255,255))
- img1.set_at((x-2,y),(255,255,255,255))
- img1.set_at((x,y+1),(255,255,255,255))
- img1.set_at((x,y+2),(255,255,255,255))
- img1.set_at((x,y-1),(255,255,255,255))
- img1.set_at((x,y-2),(255,255,255,255))
- if w1:
- x,y = pygame.mouse.get_pos()
- img1.set_at((x,y),(0,0,0,255))
- img1.set_at((x+1,y),(0,0,0,255))
- img1.set_at((x-1,y),(0,0,0,255))
- while True:
- for e in pygame.event.get():
- if e.type == pygame.QUIT:
- sys.exit()
- if e.type == MOUSEBUTTONDOWN:
- if e.button == 1:
- w = True
- elif e.button == 3:
- w1= True
-
- if e.type == MOUSEBUTTONUP:
- if e.button == 1:
- w = False
- elif e.button == 3:
- w1 = False
- if e.type == KEYDOWN:
- if e.key == K_a:
- img1.set_alpha(225)
- pygame.image.save(img1,'5.png')
-
- screen.fill(bg)
- screen.blit(img,pos)
- screen.blit(img1,pos)
- write()
- pygame.display.flip()
- clock.tick(200)
复制代码
|
|