欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

pythonOpenCVGrabCut使用實(shí)例解析-創(chuàng)新互聯(lián)

這篇文章主要介紹了python OpenCV GrabCut使用實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

站在用戶的角度思考問題,與客戶深入溝通,找到景泰網(wǎng)站設(shè)計與景泰網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋景泰地區(qū)。

先上一個效果圖:

使用Python3.7+OpenCV 3.x.

需要引入 numpy庫。

在圖上用鼠標(biāo)左鍵和右鍵標(biāo)記前景和后景即可.


如果需要重新標(biāo)記圖像,關(guān)閉程序重新運(yùn)行.


以下是具體實(shí)現(xiàn)代碼

# -*- coding:utf-8 -*-

'''
  Python: 3.5.7
  opencv 3.x

  在圖上用鼠標(biāo)左鍵和右鍵標(biāo)記前景和后景即可.
  如果需要重新標(biāo)記圖像,關(guān)閉程序重新運(yùn)行.
  By Ynxf http://www.zhouws.com
'''

import cv2
import numpy as np
import time

img_src = '../test_images/3.jpg'

drawing = False
mode = False

class GrabCut:
  def __init__(self, t_img):
    self.img = t_img
    self.img_raw = img.copy()
    self.img_width = img.shape[0]
    self.img_height = img.shape[1]
    self.scale_size = 640 * self.img_width // self.img_height
    if self.img_width > 640:
      self.img = cv2.resize(self.img, (640, self.scale_size), interpolation=cv2.INTER_AREA)
    self.img_show = self.img.copy()
    self.img_gc = self.img.copy()
    self.img_gc = cv2.GaussianBlur(self.img_gc, (3, 3), 0)
    self.lb_up = False
    self.rb_up = False
    self.lb_down = False
    self.rb_down = False
    self.mask = np.full(self.img.shape[:2], 2, dtype=np.uint8)
    self.firt_choose = True


# 鼠標(biāo)的回調(diào)函數(shù)
def mouse_event2(event, x, y, flags, param):
  global drawing, last_point, start_point
  # 左鍵按下:開始畫圖
  if event == cv2.EVENT_LBUTTONDOWN:
    drawing = True
    last_point = (x, y)
    start_point = last_point
    param.lb_down = True
    print('mouse lb down')
  elif event == cv2.EVENT_RBUTTONDOWN:
    drawing = True
    last_point = (x, y)
    start_point = last_point
    param.rb_down = True
    print('mouse rb down')
  # 鼠標(biāo)移動,畫圖
  elif event == cv2.EVENT_MOUSEMOVE:
    if drawing:
      if param.lb_down:
        cv2.line(param.img_show, last_point, (x,y), (0, 0, 255), 2, -1)
        cv2.rectangle(param.mask, last_point, (x, y), 1, -1, 4)
      else:
        cv2.line(param.img_show, last_point, (x, y), (255, 0, 0), 2, -1)
        cv2.rectangle(param.mask, last_point, (x, y), 0, -1, 4)
      last_point = (x, y)
  # 左鍵釋放:結(jié)束畫圖
  elif event == cv2.EVENT_LBUTTONUP:
    drawing = False
    param.lb_up = True
    param.lb_down = False
    cv2.line(param.img_show, last_point, (x,y), (0, 0, 255), 2, -1)
    if param.firt_choose:
      param.firt_choose = False
    cv2.rectangle(param.mask, last_point, (x,y), 1, -1, 4)
    print('mouse lb up')
  elif event == cv2.EVENT_RBUTTONUP:
    drawing = False
    param.rb_up = True
    param.rb_down = False
    cv2.line(param.img_show, last_point, (x,y), (255, 0, 0), 2, -1)
    if param.firt_choose:
      param.firt_choose = False
      param.mask = np.full(param.img.shape[:2], 3, dtype=np.uint8)
    cv2.rectangle(param.mask, last_point, (x,y), 0, -1, 4)
    print('mouse rb up')

if __name__ == '__main__':
  img = cv2.imread(img_src)
  if img is None:
    print('error: 圖像為空')
  g_img = GrabCut(img)

  cv2.namedWindow('image')
  # 定義鼠標(biāo)的回調(diào)函數(shù)
  cv2.setMouseCallback('image', mouse_event2, g_img)
  while (True):
    cv2.imshow('image', g_img.img_show)
    if g_img.lb_up or g_img.rb_up:
      g_img.lb_up = False
      g_img.rb_up = False
      start = time.process_time()
      bgdModel = np.zeros((1, 65), np.float64)
      fgdModel = np.zeros((1, 65), np.float64)

      rect = (1, 1, g_img.img.shape[1], g_img.img.shape[0])
      print(g_img.mask)
      mask = g_img.mask
      g_img.img_gc = g_img.img.copy()
      cv2.grabCut(g_img.img_gc, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_MASK)
      elapsed = (time.process_time() - start)
      mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8') # 0和2做背景
      g_img.img_gc = g_img.img_gc * mask2[:, :, np.newaxis] # 使用蒙板來獲取前景區(qū)域
      cv2.imshow('result', g_img.img_gc)

      print("Time used:", elapsed)

    # 按下ESC鍵退出
    if cv2.waitKey(20) == 27:
      break

標(biāo)題名稱:pythonOpenCVGrabCut使用實(shí)例解析-創(chuàng)新互聯(lián)
分享路徑:http://aaarwkj.com/article20/dpghco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、Google、靜態(tài)網(wǎng)站用戶體驗(yàn)、小程序開發(fā)響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
欧美成人一区二区三区片| 怡红院一区二区三区毛片| 日本最新一区二区三区视频| 国产蜜臀视频在线播放| 日韩专区亚洲专区欧美专区| 国产精品一区二区三区熟女| 在线免费观看国产黄色av| 精品久久少妇激情视频| 欧美亚洲另类日韩综合网| 日韩成人激情在线观看| 四虎在线观看最新入口| 真实夫妻露脸爱视频九色网| 成人性生交大片免费看中文 | 91麻豆成人精品国产| 欧美一区二区日韩国产| 一区二区日韩视频九一蜜桃| 水蜜桃在线观看一区二区国产 | 18岁禁看网站在线看| 日韩精品成人亚洲天堂| 日韩二区三区精品视频| 成人色视频免费在线观看| 亚洲欧美日韩国产桃色| 国产精品乱码一区二区视频| 日本加勒比不卡在线视频| 国内精品久久久久久2021| 久亚洲精品九九久久99| 女同蝴蝶在线看完整版| 国产精品国产精品三级在线观看 | 日韩精品伦理中文字幕| 丰满肥臀熟女高清区二区| 亚洲一区二区三区av蜜桃| 国产极品嫩模在线观看91| 激情五月婷婷我有我色| 亚洲综合色视频在线播放| 午夜视频在线观看免费高清国产 | 亚洲区一区二区三区精品| 本色啪啪人妻夜嗨嗨av| 麻豆精品午夜福利在线| 精品人妻一区三区蜜桃| 天堂中文在线官网在线| 日本高清不卡免费在线观看视频一二三区|