OPENCV中plt.hist为什么不显示图像
时间: 2024-11-18 16:13:55 浏览: 36
在OpenCV库中,`plt.hist` 函数实际上属于matplotlib库,而不是OpenCV的一部分。当你在OpenCV环境下使用`plt.hist`绘制直方图时,可能会遇到不显示图像的问题,原因可能有:
1. **导入顺序**:确保先导入matplotlib再导入OpenCV,因为OpenCV有自己的绘图功能,如果两个库的绘图函数冲突,可能会导致matplotlib的绘图函数不起作用。
```python
import matplotlib.pyplot as plt
import cv2
```
2. **窗口关闭**:如果你之前运行过OpenCV的`imshow`函数并关闭了窗口,那么后续的matplotlib图形可能会无法显示,因为它们共享相同的窗口系统。需要关闭所有OpenCV创建的窗口。
3. **绘图位置**:matplotlib默认不会自动显示图像,你需要明确地调用`plt.show()`函数来显示histogram。
```python
plt.hist(..., bins=256)
plt.show()
```
4. **窗口大小**:如果当前的工作区没有足够的空间,也可能导致matplotlib窗口未显示出来。可以尝试调整窗口大小或者清理其他已打开的窗口。
如果以上步骤都做了还是不行,建议检查输入的数据是否适合绘制直方图,以及查看是否有其他潜在的兼容性问题。
相关问题
import cv2 import matplotlib.pyplot as plt img = cv2.imread("D:\shujuji\guangliang\80Lux\\000031.jpg") blue = img[:, :, 0] green = img[:, :, 1] red = img[:, :, 2] blue_equ = cv2.equalizeHist(blue) green_equ = cv2.equalizeHist(green) red_equ = cv2.equalizeHist(red) equ = cv2.merge([blue_equ, green_equ, red_equ]) cv2.imshow("1",img) cv2.imshow("2",equ) plt.figure("原始图像直方图") plt.hist(img.ravel(), 256) plt.figure("均衡化图像直方图") plt.hist(equ.ravel(), 256) plt.show() cv2.waitKey() cv2.destroyAllWindows()每一句的含义
这是一个 Python 代码段,使用 OpenCV 和 Matplotlib 库对一张图像进行直方图均衡化,并显示原始图像和均衡化后的图像以及它们的直方图。
具体每一句的含义如下:
```python
import cv2
import matplotlib.pyplot as plt
```
导入需要使用的库,OpenCV 和 Matplotlib。
```python
img = cv2.imread("D:\shujuji\guangliang\80Lux\\000031.jpg")
```
使用 OpenCV 的 `imread` 函数读取一张图像,文件路径为 "D:\shujuji\guangliang\80Lux\\000031.jpg"。
```python
blue = img[:, :, 0]
green = img[:, :, 1]
red = img[:, :, 2]
```
将图像分离成蓝色通道、绿色通道和红色通道。
```python
blue_equ = cv2.equalizeHist(blue)
green_equ = cv2.equalizeHist(green)
red_equ = cv2.equalizeHist(red)
```
对每个通道进行直方图均衡化。
```python
equ = cv2.merge([blue_equ, green_equ, red_equ])
```
将均衡化后的通道合并成一张图像。
```python
cv2.imshow("1",img)
cv2.imshow("2",equ)
```
使用 OpenCV 的 `imshow` 函数显示原始图像和均衡化后的图像。
```python
plt.figure("原始图像直方图")
plt.hist(img.ravel(), 256)
plt.figure("均衡化图像直方图")
plt.hist(equ.ravel(), 256)
plt.show()
```
使用 Matplotlib 的 `hist` 函数绘制原始图像和均衡化后的图像的直方图,并使用 `show` 函数显示直方图。
```python
cv2.waitKey()
cv2.destroyAllWindows()
```
等待用户按下任意键,然后关闭所有窗口。
import cv2 as cv from matplotlib import pyplot as plt img=cv.imread("1.jpg",0) plt.hist(img.ravel(),256,[0,256]) img = cv.imshow("image",img) img = cv.waitKey() plt.show() import cv2 as cv import matplotlib.pyplot as plt img=cv.imread("1.jpg") img_gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY,0) equ=cv.equalizeHist(img_gray) plt.figure("原始灰度直方图") plt.title('Origin') plt.hist(img_gray.ravel(),256)的注释
这段代码主要是使用OpenCV和Matplotlib库对一张图像进行灰度直方图均衡化处理,并展示原始图像和均衡化后的图像的灰度直方图。
具体步骤如下:
1. 通过OpenCV读取一张图像,使用灰度图像模式(0表示灰度图像)。
2. 使用Matplotlib绘制原始图像的灰度直方图。
3. 将原始图像转换为灰度图像,使用cv.cvtColor函数将BGR图像转换为灰度图像。
4. 对灰度图像进行直方图均衡化处理,使用cv.equalizeHist函数实现。
5. 使用Matplotlib绘制均衡化后图像的灰度直方图,并显示原始图像和均衡化后的图像。
注释中的代码是绘制原始图像的灰度直方图,其中使用了plt.figure创建一个新的图像窗口,plt.title设置窗口标题,plt.hist绘制灰度直方图。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)