Mat img = imread(fn[i], IMREAD_UNCHANGED是什么意思,有什么用
时间: 2023-05-29 11:04:24 浏览: 43
這是一個 OpenCV 中的函數,用來讀取圖像。其中,IMREAD_UNCHANGED 是一個參數,表示讀取圖像時不對圖像進行任何的修改和轉換,保持原始的狀態。這個參數通常用於讀取帶有 alpha 通道的圖像,或者讀取灰度圖像、彩色圖像等不同類型的圖像。
使用 IMREAD_UNCHANGED 參數可以確保讀取的圖像與原始的圖像完全一致,並且不會丟失任何的信息。這對於一些需要精確控制圖像處理操作的場合非常有用。例如,在一些需要對圖像進行複雜運算的算法中,需要讀取原始的圖像,以保證算法的正確性和準確性。
相关问题
for (size_t i = 0; i < fn.size(); ++i) { Mat img = imread(fn[i], IMREAD_UNCHANGED); string compress_path = "/root/photo/compressphoto/" + fn[i].substr(fn[i] .find_last_of("/\\") + 1); imwrite(compress_path, img, { IMWRITE_JPEG_QUALITY, 10 }); } ;这段代码什么意思,有什么作用
这段代码是一个循环,遍历一个包含文件名的字符串向量fn,取出每个文件名,读取该文件并存储为一个OpenCV的Mat对象img,然后将该图像压缩为JPEG格式,压缩质量为10,并将压缩后的图像保存在指定的目录下。该代码的作用是将指定目录下的图片进行批量压缩,并保存到指定的目录下,以节省存储空间。
不用camp参数,换一个img1 = imread('gray_image1.jpg', cmap='gray') img2 = imread('gray_image2.jpg', cmap='gray') img3 = imread('gray_image3.jpg', cmap='gray')
如果您不想使用`cmap`参数来指定灰度图像的颜色映射,您可以在读取图像后使用Matplotlib库中的`cmap`函数将图像转换为灰度图像。
以下是一个示例代码:
```python
import matplotlib.pyplot as plt
from matplotlib.image import imread
import matplotlib.cm as cm
# 读取三张彩色图像
img1 = imread('color_image1.jpg')
img2 = imread('color_image2.jpg')
img3 = imread('color_image3.jpg')
# 将彩色图像转换为灰度图像
gray_img1 = cm.rgb2gray(img1)
gray_img2 = cm.rgb2gray(img2)
gray_img3 = cm.rgb2gray(img3)
# 创建一个大小为1x3的子图布局,并在每个子图中显示一张灰度图像
fig, axs = plt.subplots(1, 3, figsize=(10, 5))
axs[0].imshow(gray_img1, cmap='gray')
axs[0].set_title('Image 1', size=10)
axs[0].axis('off')
axs[1].imshow(gray_img2, cmap='gray')
axs[1].set_title('Image 2', size=10)
axs[1].axis('off')
axs[2].imshow(gray_img3, cmap='gray')
axs[2].set_title('Image 3', size=10)
axs[2].axis('off')
# 显示图像
plt.show()
```
这个示例代码假设您已经将三张彩色图像保存在'color_image1.jpg','color_image2.jpg'和'color_image3.jpg'文件中,且这些文件位于您的Python代码文件的同一目录下。我们使用Matplotlib库中的`rgb2gray`函数将彩色图像转换为灰度图像,并将转换后的灰度图像存储在`gray_img1`,`gray_img2`和`gray_img3`变量中。然后,我们使用`imshow`函数在每个子图中显示一张灰度图像,并使用`set_title`函数为每个子图添加标题。最后,使用`axis`函数关闭坐标轴的显示。