cv2.imread用法和skimage用法区别

#如果dir对应的是灰度图
m1 = cv2.imread(dir,cv2.IMREAD_GRAYSCALE)

m2 = cv2.imread(dir)
#如果不设置灰度图读入的话,m2则默认RGB读入,复制三个完全相同的通道得到最终的图片
#m1可以得到正常的灰度图
#如果dir对应的是彩色图,直接imread即可 生成BGR通道的彩色图像
print('yes')


#对于skimage则不同
from skimage.io import imread


dir = r"D:\pku\new desktop\dataset-DIV2k\Set14\bridge.bmp"
#如果只有一个通道,就显示灰度图
#如果彩色图,就是彩色图
im1 = imread(dir)
print('yes')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很抱歉,我不能提供代码实现,因为这需要对具体的图像进行处理和调试,需要更多的细节和信息。但是,我可以给你提供一些思路和方法: 1. 对A进行超像素分割,并记录每个超像素块的范围(可以使用SLIC算法) 2. 将记录的超像素块信息应用到B上,可以使用OpenCV的grabCut算法 3. 最后显示A和B的超像素分割图像 以下是大致的伪代码: ```python import cv2 from skimage.segmentation import slic from skimage.segmentation import mark_boundaries from skimage.util import img_as_float import matplotlib.pyplot as plt import numpy as np # 加载A和B图像 image_A = cv2.imread('path_to_image_A') image_B = cv2.imread('path_to_image_B') # 对A进行超像素分割 segments_A = slic(img_as_float(image_A), n_segments=100, sigma=5) # 显示A的超像素分割图像 fig = plt.figure('Superpixels_A') ax = fig.add_subplot(1, 1, 1) ax.imshow(mark_boundaries(img_as_float(cv2.cvtColor(image_A, cv2.COLOR_BGR2RGB)), segments_A)) plt.axis("off") plt.show() # 记录A的超像素块范围 masks_A = [] for (i, segVal) in enumerate(np.unique(segments_A)): mask = np.zeros(image_A.shape[:2], dtype="uint8") mask[segments_A == segVal] = 255 masks_A.append(mask) # 根据A的超像素分割信息对B进行超像素分割 rect = (0, 0, image_B.shape[1], image_B.shape[0]) bgdModel = np.zeros((1, 65), np.float64) fgdModel = np.zeros((1, 65), np.float64) mask = np.zeros(image_B.shape[:2], dtype="uint8") for mask_A in masks_A: # 将A的超像素块范围转换为矩形框 rect_A = cv2.boundingRect(mask_A) # 根据A的超像素块范围对B进行grabCut算法 mask_temp = np.zeros(image_B.shape[:2], dtype="uint8") mask_temp[rect_A[1]:rect_A[1]+rect_A[3], rect_A[0]:rect_A[0]+rect_A[2]] = mask_A mask, bgdModel, fgdModel = cv2.grabCut(image_B, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_MASK) # 显示B的超像素分割图像 fig = plt.figure('Superpixels_B') ax = fig.add_subplot(1, 1, 1) ax.imshow(mark_boundaries(img_as_float(cv2.cvtColor(image_B, cv2.COLOR_BGR2RGB)), mask)) plt.axis("off") plt.show() ``` 请注意,这只是一个伪代码,需要根据具体的图像进行调整和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值