Image processing 我自己使用python实现二进制阈值,但结果不正确
我试图使用python自己实现二进制阈值,首先我将图像转换为灰度图像。然后,我将gay比例图像的最大值作为阈值。然后我将嵌套for循环用于执行条件检查。下面是我的代码。我已经采取的例子图像使用的离子openCV网站Image processing 我自己使用python实现二进制阈值,但结果不正确,image-processing,computer-vision,feature-detection,threshold,Image Processing,Computer Vision,Feature Detection,Threshold,我试图使用python自己实现二进制阈值,首先我将图像转换为灰度图像。然后,我将gay比例图像的最大值作为阈值。然后我将嵌套for循环用于执行条件检查。下面是我的代码。我已经采取的例子图像使用的离子openCV网站 我不是在讽刺你,我只是希望让你意识到一些事情。你希望有多少像素比最亮的像素亮?我看不出有什么问题。你说你得到了错误的结果。您希望得到什么?尝试t>0.5(中灰色)。这应该是半黑半白。看,我是图像处理领域的新手。我现在正在学习。我正试图把我所理解的正确编码。似乎我对门槛的理解还不完整
我不是在讽刺你,我只是希望让你意识到一些事情。你希望有多少像素比最亮的像素亮?我看不出有什么问题。你说你得到了错误的结果。您希望得到什么?尝试t>0.5(中灰色)。这应该是半黑半白。看,我是图像处理领域的新手。我现在正在学习。我正试图把我所理解的正确编码。似乎我对门槛的理解还不完整
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as im
img = im.imread('threshold.png')
plt.imshow(img)
plt.show()
R=img[:,:,0]
G=img[:,:,1]
B=img[:,:,2]
M,N=R.shape
gray_img= np.zeros((M,N))
intensity= np.zeros((M,N))
for i in range(M):
for j in range(N):
gray_img[i, j]=(R[i, j]*0.2989)+(G[i, j]*0.5870)+(B[i, j]*0.114);
t=gray_img.max()
for i in range(1, M-1):
for j in range(1,N-1):
intensity[i,j]=gray_img[i,j]
if(intensity[i,j]>t):
intensity[i,j]=1
else:
intensity[i,j]=0
plt.imshow(intensity)
plt.show()