python - 比较两个图像,如果它们具有几乎相同的 RGB 颜色分布
问题描述
我有两个彩色图像 img1 和 img2 定义如下
img1 = cv2.imread("source1")
img2 = cv2.imread("source2")
现在我想知道两个图像的RGB值分布是否几乎相同。作为人类,我可以从两幅图像的 RGB 直方图分布中看出它们几乎相同与否。但是有没有一种方法可以让我通过 OpenCV 做到这一点,它可以分辨出两个图像几乎与它的 RGB 分布相同?
color = ('b','g','r')
for i,col in enumerate(color):
histr = cv.calcHist([img1],[i],None,[256],[0,256])
plt.subplot(1,2,1)
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.title("Img 1")
histr = cv.calcHist([img2],[i],None,[256],[0,256])
plt.subplot(1,2,2)
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.title("Img 2")
plt.show()
解决方案
您可以在 Python/OpenCV 中使用 cv2.compareHist()。它需要两个直方图,可以是 1D、2D 或 3D 直方图,并返回相似度的度量分数。
请参阅https://docs.opencv.org/3.4/d6/dc7/group__imgproc__hist.html#gaf4190090efa5c47cb367cf97a9a519bd和https://docs.opencv.org/3.4/d8/dc8/tutorial_histogram_comparison.html和https://www.pyimagesearch .com/2014/07/14/3-ways-compare-histograms-using-opencv-python/,例如
推荐阅读
- javascript - 将 OAuth id 令牌从 html 页面传递到 servlet
- excel - 大型机数据提取
- dns - 如果适配器上有很多 IP 地址,为什么“DNSServiceRegisterRecord”不返回引用?
- php - Composer、Windows Server 和臭名昭著的“SSL 操作失败,代码 1”错误
- reactjs - reactjs如何处理大量数据
- swift - 当应用程序被杀死/后台使用swift时如何将推送通知保存到领域
- java - 如何更改 Json 格式?
- angular - 文件 google-services.json 丢失。没有它,Google 服务插件将无法运行。搜索位置:
- php - 从 memcached 加载 json_encoded PHP 数组时出现 Unicode 错误
- django - 我在哪里永久存储图像以便heroku应用程序可以访问它们,即使在dynos循环之后我需要显示图像