0
이미지의 검정색 선 내에 포함 된 영역을 찾으려고합니다.채우기 영역은 검은 색 선으로 표시됩니다.
다음은 샘플 이미지를 시작하는 "photo.jpg를"입니다 :이 위해 OpenCV의 및 SimpleCV을 사용했다
Sample starting image "photo.jpg"
. 여기
from SimpleCV import Camera, Display, Image, Color
import time
import cv2
import numpy as np
n_image = Image('photo.jpg')
n_image2 = n_image.crop(55, 72, 546, 276) #Crop X,Y,W,H
n_image2.save('photo_2.jpg')
imagea = Image("photo_2.jpg")
greya = imagea.stretch(50).invert() #50=Blackness level of Black
greya.show()
greya.save('photo_2-GREY.jpg')
im = cv2.imread('photo_2-GREY.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,220,255,0)
contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
largest_areas = sorted(contours, key=cv2.contourArea)
cv2.drawContours(im, [largest_areas[-2]], 0, (255,255,255,255), -1)
cv2.drawContours(im,contours,-1,(255,255,255),-1)
cv2.imshow('Image Window',im)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('photo_3.jpg',im)
n_image = Image('photo_3.jpg')
mask = n_image.colorDistance((127, 127, 127))
mask.show()
mask.save('mask.jpg')
time.sleep(3)
binarised = mask.binarize()
blobs = binarised.findBlobs()
blobs.show(width=3)
time.sleep(60)
individualareaofholes = blobs.area()
compositeareaofholes = sum(individualareaofholes)
orig_area = 132432
finalarea = (orig_area - compositeareaofholes)
res = round(((finalarea/orig_area)*100),0)
print "Area is %d" % res
면적 계산에 사용되는 이미지 "mask.jpg"이다 : 여기서
코드이다
가 관찰 : 내부 1. 흑색 패치 "mask.jpg"의 흰색 영역 2. "TAXI"라는 단어가있는 왼쪽 하단 구석의 흰색 부분
어떻게 제거합니까? 난 그냥 검은 선 안의 모든 것을 다 먹어보고 선 밖의 모든 것이 그 지역을 계산할 때 고려되지 않기를 바란다.