这个错误是由于 hist1 返回的是一个包含两个数组的元组,而 plt.plot() 只能接受一个数组作为参数。需要将 hist1 解包成两个单独的数组,然后再传递给 plt.plot() 函数。修改代码如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('C:/Users/LENOVO/Desktop/c.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 计算彩色图像的直方图
hist1, bins = np.histogram(img.ravel(), 256, [0, 256])
hist2 = cv2.calcHist([img], [0], None, [256], [0, 255])

# 显示两个直方图
plt.subplot(2, 1, 1)
plt.imshow(img)
plt.subplot(2, 2, 3)
plt.plot(hist1)
plt.subplot(2, 2, 4)
plt.plot(hist2)
plt.show()

修改后的代码中,我们使用 np.histogram() 函数计算直方图,该函数返回两个数组:hist1bins。其中 hist1 是直方图的频次,bins 是直方图的区间。然后,我们将这两个数组分别传递给 plt.plot() 函数进行绘制。

这样就能解决 ValueError: setting an array element with a sequence. 错误,并成功绘制出彩色图像的直方图。

Python OpenCV 直方图绘制错误及解决方法

原文地址: https://www.cveoy.top/t/topic/jtfP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录