plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('Input Image')为什么要进行bgr格式转换为rgb格式
时间: 2024-03-31 16:32:33 浏览: 14
这是因为在OpenCV库中读取和处理图像时,默认使用BGR(蓝绿红)颜色空间,而在其他一些库(如Matplotlib)中则默认使用RGB(红绿蓝)颜色空间。因此,如果直接使用OpenCV中的图像进行Matplotlib的显示,颜色会出现错误的偏移。为了避免这种错误,需要使用`cv2.cvtColor()`函数将BGR格式的图像转换为RGB格式,以确保颜色正确地显示在Matplotlib窗口中。
相关问题
plt.subplot(221), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('Input Image')什么意思
这是Python中使用Matplotlib和OpenCV库对图像进行可视化的代码。其中:
- plt.subplot(221)是将当前图像窗口分成2行2列,当前子图放在第1个位置。
- cv2.cvtColor()是OpenCV库中的一个函数,用于将图像从一种颜色空间转换为另一种颜色空间。
- plt.imshow()是Matplotlib库中的一个函数,用于显示图像。
- plt.title()是Matplotlib库中的一个函数,用于设置图像的标题。
因此,这行代码的作用是将一个BGR格式的图像转换为RGB格式,并在Matplotlib窗口中显示出来,标题为'Input Image'。
使用如下python代码:import cv2 import numpy as np import matplotlib.pyplot as plt def fix_threshold(img, thresh, maxval=255): return np.where(((img > thresh) & (img < maxval)), 255, 0) img = cv2.imread("C:\\Users\\YOLO\\UNET\\UNETtrain\\image\\1.png") img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) ret, th = cv2.threshold(img_gray, 80, 255, cv2.THRESH_BINARY) fix = fix_threshold(img_gray, 127, 255) # plt.subplot(131), plt.imshow(img_gray, cmap='gray') # plt.title('Original Image'), plt.xticks([]), plt.yticks([]) plt.subplot(), plt.imshow(th, cmap='gray') plt.xticks([]), plt.yticks([]) plt.savefig("C:\\Users\\YOLO\\UNET\\UNETtrain\\label\\L1.png",bbox_inches='tight',pad_inches = -0.1),为什么保存下来的图片跟原图尺寸不一样
抱歉,我之前给出的回答是错误的。`bbox_inches='tight'` 参数在这种情况下无法解决图像尺寸不一致的问题。
如果你希望保存的图像尺寸与原图一致,可以使用 `cv2.imwrite()` 函数来替代 `plt.savefig()`。下面是修改后的代码:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
def fix_threshold(img, thresh, maxval=255):
return np.where(((img > thresh) & (img < maxval)), 255, 0)
img = cv2.imread("C:\\Users\\YOLO\\UNET\\UNETtrain\\image\\1.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
ret, th = cv2.threshold(img_gray, 80, 255, cv2.THRESH_BINARY)
fix = fix_threshold(img_gray, 127, 255)
plt.subplot(), plt.imshow(th, cmap='gray')
plt.xticks([]), plt.yticks([])
cv2.imwrite("C:\\Users\\YOLO\\UNET\\UNETtrain\\label\\L1.png", th)
```
通过使用 `cv2.imwrite()` 函数,保存的图像将与原图具有相同的尺寸。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](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)