检测图像中的最大像素距离
Detecting maximum pixel distance in a image
我是 python 和 pycharm 的初学者。我在处理项目时遇到问题
你能告诉我如何编写如下检测图像中最大距离的代码吗?我在之前的post中看到一些使用MATLAB的代码,但我想知道如何用python代码制作它。
我的目标是画一条线(就像下面 post 中的红线一样。)并在图像中标记它的距离。
post : http://georgepavlides.info/how-to-detect-the-maximum-pixel-distance-in-a-binary-image/
我写了这段代码,希望它能解决你的问题:
from PIL import Image
import math
im = Image.open('C:\pic\1.jpg') # Can be many different formats.
pix = im.load()
rgb_im = im.convert('RGB')
ls_white=[]
for i in range(rgb_im.size[0]):
for j in range(rgb_im.size[1]):
if(rgb_im.getpixel((i, j))!=(0,0,0)):
ls_white.append((i,j))
max_distance=-1
for i in range(len(ls_white)):
for j in range(i+1,len(ls_white)):
distance=math.dist(ls_white(i),ls_white(j))>max_distance
if(distance>max_distance):
max_distance=distance
我针对 50px*30px(1500 像素)的图像对其进行了测试并且它有效。
提醒:大图可能会占满你的内存,所以你必须做一些优化并去除一些不纯的像素。
首先我得到任何颜色不等于黑色的像素,并将其位置保存到 ls_white。
其次我检查从ls_white中的第一个点到其他点的距离,并为其他像素做这个,如果距离更大,将把它保存到max_distance。
我建议从一张白点数量很少的小而简单的图片上尝试一下。
我是 python 和 pycharm 的初学者。我在处理项目时遇到问题
你能告诉我如何编写如下检测图像中最大距离的代码吗?我在之前的post中看到一些使用MATLAB的代码,但我想知道如何用python代码制作它。
我的目标是画一条线(就像下面 post 中的红线一样。)并在图像中标记它的距离。
post : http://georgepavlides.info/how-to-detect-the-maximum-pixel-distance-in-a-binary-image/
我写了这段代码,希望它能解决你的问题:
from PIL import Image
import math
im = Image.open('C:\pic\1.jpg') # Can be many different formats.
pix = im.load()
rgb_im = im.convert('RGB')
ls_white=[]
for i in range(rgb_im.size[0]):
for j in range(rgb_im.size[1]):
if(rgb_im.getpixel((i, j))!=(0,0,0)):
ls_white.append((i,j))
max_distance=-1
for i in range(len(ls_white)):
for j in range(i+1,len(ls_white)):
distance=math.dist(ls_white(i),ls_white(j))>max_distance
if(distance>max_distance):
max_distance=distance
我针对 50px*30px(1500 像素)的图像对其进行了测试并且它有效。
提醒:大图可能会占满你的内存,所以你必须做一些优化并去除一些不纯的像素。
首先我得到任何颜色不等于黑色的像素,并将其位置保存到 ls_white。
其次我检查从ls_white中的第一个点到其他点的距离,并为其他像素做这个,如果距离更大,将把它保存到max_distance。
我建议从一张白点数量很少的小而简单的图片上尝试一下。