Şeklin (1,19) gelen giriş dizisi yayın yapamadı. Bu kodu tanımlamak zor ama temelde bir resmim var (ad ve özelliklerle ikilikli) ve küçük bir kutu penceresi oluşturdum (1x20), bu pencereyle her piksele girmeye çalışıyorum ve siyah piksel sayısını sayıyorum. pencerede. Ancak her sütunun sonunda (0'dan h'ye gittiğimde) siyah piksellerin yerel minimini bulmak istiyorum ve sonra bu noktalarda pencere = 0 (beyaz) olacak (bu biraz alakasız) gerçi). Sadece numpy diziler dilimleme bu hatayı yapmaya devam edinValueError: ben basit numpy dizi dilimleme yapmaya çalışıyorum bu hatayı almaya devam şekil (1,20)
, her zaman dizisi bir sütun çok kısa ve ben nedenini bilmiyorum diyor. Her neyse, benim kodum ...
import scipy
import numpy as np
import cv2
from scipy.signal import argrelextrema
#%% Import grain image
imagein = cv2.imread('141110_0.35_armt_amb2_0_load_pag_0000.tif',0)
#resized = cv2.resize(imagein,None,fx=0.2,fy=0.2,interpolation =cv2.INTER_AREA)
crop = imagein[1125:1200,1100:1185]
HC = cv2.equalizeHist(crop)
ret, thresh = cv2.threshold(HC,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
thresh = 255- thresh
cv2.imshow('Image',thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
#%% Cropped thresholded Image --> Start segmentation
binarised = cv2.erode(thresh,None,iterations = 1)
binarised = cv2.dilate(binarised,None,iterations = 1) # Opening of particles
h,w = binarised.shape
#%% Start separation loop
windowH = np.zeros(shape=(1,20))
NumNonZero = np.zeros(shape=(h,w))
#windowV = np.zeros(shape=(20,1))
for j in np.arange(0,w,1):
for i in np.arange(0,h,1):
windowH[:,:] = binarised[i:i+1,j:j+20] #####ERRROR HERE
NumNonZero[i,j] = cv2.countNonZero(windowH)
x = argrelextrema(NumNonZero[i,0:h], np.less) #gives position of min vlaues in array
y = NumNonZero[argrelextrema(NumNonZero[i,0:h], np.less)[0]] #gives min values'
Hatanın nerede olduğunu vurguladım (döngüler için çift). Herhangi bir yardım teşekkür takdir !! windowH
Yani berrak 1x20 ve ben de 1x20 girmeye çalışıyorum işte binarised 'bir yığın ama buna 1x 19 olduğunu söylüyor! ???! ¬?
ValueError: Şimdi Repost
########## hata okur bu sefer, ben yarattık bu fonksiyonu ile çok benzer bir hata var gelen giriş dizisi yayın olamazdı şekle şekli (2,3,3) İşte(3,3,3)
Ben pencere denemek ve değerlerle kendini doldurmak etmeyecek şekilde bakmak yinelemeleri azaltarak denedim ... benim kod olduğunu görüntü dışındadır ama hala işe yaramaz. Baska öneri? Teşekkür ederim.#%% Import Libraries
import numpy as np
import cv2
#%% 3D Median Filter Function
def Median_Filter_3D(image,kernel):
window = np.zeros(shape=(kernel,kernel,kernel), dtype = np.uint8)
n = (kernel-1)/2 #Deals with Image border
imgout = np.empty_like(image)
w,h,l = image.shape
#Start Loop over each pixel
for x in np.arange(0,(h-kernel-3),1):
for y in np.arange(0,(w-kernel-3),1):
for z in np.arange(0,(l-kernel-3),1):
window[:,:,:] = image[x:x+kernel,y:y+kernel,z:z+kernel]
med = np.median(window)
imgout[x+n,y+n,z+n] = med
return(imgout)
'j: Eğer dizinin sonunu gidiyor başlarsanız j + 20' 20 element değildir. – user2357112