使用 CV2 读取 4 通道图像进行语义分割

问题描述 投票:0回答:1

我正在从事一个 Unet 语义分割项目,我需要在 Python 中使用 OpenCV 处理 4 通道图像,我是这个领域的新手。我在 YouTube 上找到了一个出于相同目的的教程(链接到教程),但教程中提供的代码使用 RGB 和 cv2.imread() 来读取图像,我认为这不适用于 4 通道图像。

我的目标是调整提供的代码以处理 4 通道图像,但我不确定如何相应地修改它。

这是教程中代码的简化版本:

import os
import cv2
from matplotlib import pyplot as plt

temp_img = cv2.imread('C:/Users/PREDATOR/Desktop/4_channel_image.tif')
temp_img = cv2.cvtColor(temp_img,cv2.COLOR_BGR2RGB)
plt.imshow(temp_img)

这是错误:

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
Cell In[5], line 2
      1 temp_img = cv2.imread('C:/Users/PREDATOR/Desktop/4_channel_image.tif')
----> 2 temp_img = cv2.cvtColor(temp_img,cv2.COLOR_BGR2RGB)
      3 plt.imshow(temp_img) #change 0 to 1 2 or 3 to view other channels"""
    

error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\color.cpp:196: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
python opencv deep-learning semantic-segmentation
1个回答
0
投票

我尝试了下面的代码并且它有效:

import os
import tifffile
from matplotlib import pyplot as plt

temp_img = tifffile.imread('C:/Users/PREDATOR/Desktop/4_channel_image.tif')
plt.imshow(temp_img)
© www.soinside.com 2019 - 2024. All rights reserved.