opencv读入图片注意事项
创始人
2024-06-02 10:22:14
0

来源:投稿 作者:蓬蓬奇
编辑:学姐

深度学习数据预处理中常用opencv读入图片,一般在__getitem__函数中调用。本文主要介绍opencv读取图片的一些细节以及注意事项。本文中使用的图片见第6节“opencv测试使用的图片”。

1.如何通过opencv显示图片?

通过Jupyter Notebook运行OpenCV,运行cv2.imshow()时报错。

import cv2img = cv2.imread(img_path, cv2.IMREAD_UNCHANGED)
cv2.imshow("img", img)

报错:

---------------------------------------------------------------------------
error                                     Traceback (most recent call last)
Input In [60], in ()
----> 1 cv2.imshow("img", img)error: OpenCV(4.6.0) /io/opencv/modules/highgui/src/window.cpp:1267: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

解决方法:先卸载opencv,再重新安装。(未解决,可直接转下述方法)

conda remove opencv
conda install -c menpo opencvpip install --upgrade pip
pip install opencv-contrib-python

参考链接:https://blog.csdn.net/tudou2013goodluck/article/details/108402055

报错:内核崩溃。

Kernel Restarting
The kernel for Untitled.ipynb appears to have died. It will restart automatically.

解决方法:opencv读取图片,之后使用matplotlib库显示图片。

下述两个代码均可以:

%matplotlib inline
from matplotlib import pyplot as plt
import cv2img = cv2.imread('图片路径')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)plt.imshow(img)
plt.show()
import cv2def cv2_imshow(a, **kwargs):a = a.clip(0, 255).astype('uint8')# cv2 stores colors as BGR; convert to RGBif a.ndim == 3:if a.shape[2] == 4:a = cv2.cvtColor(a, cv2.COLOR_BGRA2RGBA)else:a = cv2.cvtColor(a, cv2.COLOR_BGR2RGB)return plt.imshow(a, **kwargs)

参考链接:https://github.com/jupyter/notebook/issues/3935

2.opencv读入图片默认为BGR

img_path = "00001.png"    # 图片路径
mask_path = "00001_matte.png"  # 对应的图像分割标签路径%matplotlib inline
from matplotlib import pyplot as plt
import cv2
import numpy as npimg_bgr = cv2.imread(img_path, cv2.IMREAD_COLOR)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # BGR->RGBplt.imshow(img)
plt.show()

第一幅图为原始图片,第二幅图为BGR图片,第三幅图为RGB图片。

3.opencv读入图片默认为HWC

img_rgb.shape
(800, 600, 3)

可以将HWC转变为CHW:

img_rgb = img_rgb.transpose((2, 0, 1))      # hwc --> chw

4.opencv读入图片默认为nd.array形式

cv2.imread()读取图片后以多维数组的形式保存图片信息。

type(img_rgb)
numpy.ndarray

可以转变为torch.tensor,.float()表示转变为torch.float32

img_chw_tensor = torch.from_numpy(img_rgb).float()

5.cv2.imread()

cv2.imread()有两个参数,第一个参数filename是图片路径,第二个参数flag表示图片读取模式,共有三种:

  • cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。

  • cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。

  • cv2.IMREAD_UNCHANGED:包括alpha(包括透明度通道),可以直接写-1。即以不改变图片的方式打开,图片是彩色就是彩色,图片是灰度图像就是灰度图像。

通过cv2.IMREAD_COLOR读入灰度图,三通道数值相同。

mask = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)  # 读入灰度图
mask1 = cv2.imread(mask_path, cv2.IMREAD_COLOR)     # 读入彩色图
mask2 = cv2.imread(mask_path, cv2.IMREAD_UNCHANGED) # 读入原始图片print(mask.shape)  # (800, 600)
print(mask1.shape) # (800, 600, 3)
print(mask2.shape) # (800, 600)

第一幅图为mask,第二幅图为mask1,第三幅图为mask2。

import numpy as np
np.set_printoptions(threshold=np.inf)# np.unique(mask1[:,:,0] == mask1[:,:,1])
print((mask1[:,:,0] == mask1[:,:,1]).all())  # True
print((np.unique(mask1[:,:,2] == mask).all()))
True
True

6.opencv测试使用的图片

可以右键保存下述图片,调试上面代码。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“CVPR”领取CV顶会500多篇经典论文

码字不易,欢迎大家点赞评论收藏!

相关内容

热门资讯

我来教大家“非凡贪玩辅助器ap... 亲,非凡贪玩这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,非凡贪玩的开挂软件,名...
我来教大家“瀚海麻将辅助器ap... 我来教大家“瀚海麻将辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“天游联盟辅助器ap... 您好,天游联盟这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“芝麻红中麻将辅助器... 亲,芝麻红中麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,芝麻红中麻将的开挂...
我来教大家“百游辅助器app官... 我来教大家“百游辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方神器...
我来教大家“天天松滋麻将辅助器... 我来教大家“天天松滋麻将辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第...
我来教大家“情怀河北麻将辅助器... 我来教大家“情怀河北麻将辅助器app官方下载最新版本更新”详细分享开挂一、情怀河北麻将AI软件牌型概...
我来教大家“威信茶楼辅助器ap... 您好,威信茶楼这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“沐晖麻将辅助器ap... 亲,沐晖麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,沐晖麻将的开挂软件,名...
我来教大家“临海麻将辅助器ap... 我来教大家“临海麻将辅助器app官方下载最新版本更新”详细分享开挂一、临海麻将AI软件牌型概率发牌机...
我来教大家“乐享麻将辅助器ap... 我来教大家“乐享麻将辅助器app官方下载最新版本更新”详细分享开挂一、乐享麻将AI软件牌型概率发牌机...
我来教大家“斗棋红中辅助器ap... 亲,斗棋红中这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,斗棋红中的开挂软件,名...
我来教大家“邳州友友麻将辅助器... 我来教大家“邳州友友麻将辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第...
我来教大家“欧搏百家乐辅助器a... 亲,欧搏百家乐这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,欧搏百家乐的开挂软件...
我来教大家“微乐哈尔滨麻将辅助... 您好,微乐哈尔滨麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游...
我来教大家“东乡麻将辅助器ap... 您好,东乡麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“熊猫正版辅助器ap... 您好,熊猫正版这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“乐星跑胡子辅助器a... 您好,乐星跑胡子这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中...
我来教大家“小闲54棋牌辅助器... 我来教大家“小闲54棋牌辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第...
我来教大家“闲逸游戏辅助器ap... 您好,闲逸游戏这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...