160x160 이미지에서 각 픽셀의 값을 찾고 특정 강도가 관찰되는 값을 기록하는 다음 코드를 Python으로 작성했습니다.
def red_finder(img,fname):
resolution=img.shape
reds=[] #array to add intensity pixels
centre=np.divide(resolution,2)
for y in range(resolution[1]):
for x in range(resolution[0]):
#print img[x,y]
if np.all(img[x,y]!=0):
reds.append([x,y])
reds=np.array(reds)
(redx,redy)=(np.mean(reds,axis=0))
proc=(np.mean(reds,axis=0))
xray=proc-centre
return (xray[1],xray[0])
제 생각에는
for y in range(resolution[1]):
for x in range(resolution[0]):
#print img[x,y]
if np.all(img[x,y]!=0):
reds.append([x,y])
각 픽셀을 스캔하는이 방법은 많은 시간을 소비합니다.
이미지 크기가 더 크고 때로는 다양하기 때문에 코드 속도를 높일 수있는 솔루션이 있습니까?
감사합니다.
이중 for 루프는 numpy.where 호출로 대체 될 수 있습니다 .
def red_finder(img):
resolution = img.shape
centre = np.divide(resolution, 2)
redx, redy = np.where(img != 0)
proc = (redx.mean(), redy.mean())
xray = proc - centre
return (xray[1], xray[0])
참고 : 귀하의 코드 img
가 2 차원을 의미한다고 생각 합니다 (그렇지 않으면 proc - center
오류가 발생합니다). 따라서 img[x, y]
스칼라 값입니다. 그래서 np.all(img[x, y] != 0)
동일하다 img[x, y] != 0
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다