基於Grabcut演算法的前景分割(python)

2021-10-12 08:26:58 字數 1401 閱讀 3269

import cv2

import numpy as np

import math

#基於grabcut演算法的前景分割

src = cv2.imread(

"gaussian_blur.png"

)src = cv2.resize(src,(0

,0), fx=

0.5, fy=

0.5)

r = cv2.selectroi(

'input'

, src,

false

)# 返回 (x_min, y_min, w, h)

roi = src[

int(r[1]

):int(r[1]

+r[3])

,int

(r[0])

:int

(r[0

]+r[2]

)]# roi區域

mask = np.zeros(src.shape[:2

], dtype=np.uint8)

# 原圖mask

rect =

(int

(r[0])

,int

(r[1])

,int

(r[2])

,int

(r[3])

)# 矩形roi

bgdmodel = np.zeros((1

,65),np.float64)

# bg模型的臨時陣列

fgdmodel = np.zeros((1

,65),np.float64)

# fg模型的臨時陣列

cv2.grabcut(src,mask,rect,bgdmodel,fgdmodel,

11, mode=cv2.gc_init_with_rect)

mask2 = np.where(

(mask==1)

+(mask==3)

,255,0

).astype(

'uint8'

)# 提取前景和可能的前景區域

result = cv2.bitwise_and(src,src,mask=mask2)

cv2.imwrite(

'forward.png'

, result)

cv2.imshow(

"forard"

, result)

cv2.waitkey(0)

cv2.destroyallwindows(

)

只需更改src = cv2.imread("gaussian_blur.png")中的gaussian_blur.png,需要與**在乙個資料夾下,儲存的也在相同資料夾下。

基於大資料的移動應用開發前景有哪些

在這裡相信有許多想要學習大資料的同學,大家可以 下大資料學習裙 740041381,即可免費領取套系統的大資料學習教程 大資料可用於以有用的方式增強人類的判斷力,隨著人們不斷使用移動裝置,他們的資料不斷儲存不斷增加,它隨著時間的流逝而變得越來越大,由於大資料的資料集如此之大,傳統的應用無法收集和評估...

基於大資料的移動應用開發前景有哪些

大資料可用於以有用的方式增強人類的判斷力,隨著人們不斷使用移動裝置,他們的資料不斷儲存不斷增加,它隨著時間的流逝而變得越來越大,由於大資料的資料集如此之大,傳統的應用無法收集和評估資料,基於大資料開發的應用彌合了技術與消費者之間的差距,從而促進了更好的企業間和企業內部市場關係。開發和提交應用到應用商...

基於KMeans聚類演算法進行簡單的資料分類

以二維陣列 鳶尾花和中國城市經緯度為例項先簡單了解下kmeans聚類演算法。聚類演算法屬於無監督學習,其中的kmeans演算法是將一組有n個樣本的資料劃分成k個不相交的 clusters 簇 c。means 均值 通常被稱為 cluster 簇 的 centroids 質心 注意,它們一般不是從 x...