如何解决如何从图像获取x,y坐标以生成热图Python
我是编程初学者。我正在使用图像,并且想用简单的代码(一开始)对其进行分析。
我有在白色背景上带有黑点的图像(JPEG文件)。我想创建一个热图或稠密的地图,以标识出我拥有很多点和很少有点的区域。
我看到有些人在使用histogram2d,必须输入x和y坐标。我知道图像是一个数组,因此它包含像素的x,y坐标,但是我不知道如何访问它们以使用例如histogram2d函数。有人能帮我吗?由于我是初学者,所以我想提供一些解释,如果有人可以这么好地解释它,我将非常感谢。
也许我还可以使用另一种功能来实现这种方法。如果是这样,请给我一些建议
预先感谢您对我的帮助。
我意识到我需要先拿到黑锅。所以我调整了代码:
import cv2
import numpy as np
import matplotlib.pyplot as plt
import random
#read image
img = cv2.imread("C:\\Users\\die5k\\Desktop\\NeuerOrdner\\eins.jpg")
#make Numpy array from image
n = np.array(img)
#search black pixels
#and gives an array of x and y coordinates of black pixels
#blacks = np.where((n[:,:,0:3] == [0,0]).all(2))
xcoords,ycoords = np.where((n[:,0]).all(2))
print(xcoords)
print(ycoords)
当我像上面那样单独尝试第一部分时,效果很好,我得到了两个具有x和y坐标的数组!所以我将两个代码放在一起:
import cv2
import numpy as np
import matplotlib.pyplot as plt
def getcoordinates(img):
#make Numpy array from image
n = np.array(img)
#search black pixels
#and gives an array of x and y coordinates of black pixels
xcoords,0]).all(2))
print(xcoords)
print(ycoords)
def getHistogramm(xcoords,ycoords):
plt.hist2d(xcoords,ycoords,bins=50,cmap=plt.cm.jet)
plt.title("test")
plt.savefig("test1",bbox_inches='tight')
plt.close()
if __name__ == '__main__':
img = cv2.imread("C:\\Users\\die5k\\Desktop\\NeuerOrdner\\eins.jpg",0)
getcoordinates(img)
getHistogramm(xcoords,ycoords)
然后我得到一个我不明白的错误。
(注释)C:\ Users \ die5k \ Desktop \ NeuerOrdner> python combi.py 追溯(最近一次通话): 在第31行的文件“ combi.py”中 getcoordinates(img) 在getcoordinates中的文件“ combi.py”,第13行 xcoords,ycoords = np.where(((n [:,:: 0:3] == [0,0])。all(2)) IndexError:数组的索引过多:数组是二维的,但是3个被索引了
出了什么问题?
通过这种方式,我切割了原始图像,使其仅包含一个黑点用于尝试代码。
我有一个图像示例: enter image description here
我希望在此网站上显示类似的内容:https://python-graph-gallery.com/86-avoid-overlapping-in-scatterplot-with-2d-density/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。