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多篇经典论文

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

相关内容

热门资讯

玩家终于实锤了!秋水佳人有挂吗... 自定义秋水佳人系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分...
玩家终于实锤了!讯奇麻将有挂吗... 亲,讯奇麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,讯奇麻将的开挂软件,名...
玩家终于实锤了!金雀汇有挂吗(... 亲,金雀汇这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,金雀汇的开挂软件,名称叫...
玩家终于实锤了!大富豪有挂吗(... 你好大富豪这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】, ...
玩家终于实锤了!微乐云南麻将有... 你好微乐云南麻将这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785...
玩家终于实锤了!中至斗地主有挂... 您好,中至斗地主这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785...
玩家终于实锤了!毛豆娱乐有挂吗... 亲,毛豆娱乐这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,毛豆娱乐的开挂软件,名...
玩家终于实锤了!星禾游戏有挂吗... 玩家终于实锤了!星禾游戏有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)1、让任何用户在无需AI...
玩家终于实锤了!海浪手游有挂吗... 你好海浪手游这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785】,...
玩家终于实锤了!开心联盟有挂吗... 玩家终于实锤了!开心联盟有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)1、让任何用户在无需AI...
玩家终于实锤了!土豪赢三张有挂... 玩家终于实锤了!土豪赢三张有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)是一款可以让一直输的玩...
玩家终于实锤了!立鸿字牌有挂吗... 玩家终于实锤了!立鸿字牌有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)1、让任何用户在无需AI...
玩家终于实锤了!桦南麻将有挂吗... 亲,桦南麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,桦南麻将的开挂软件,名...
玩家终于实锤了!胡乐白银麻将有... 亲,胡乐白银麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,胡乐白银麻将的开挂...
玩家终于实锤了!牵手常德棋牌有... 你好牵手常德棋牌这个游戏其实有挂的,确实是有挂的,需要了解【请加QQ群客服咨询:1075075785...
玩家终于实锤了!乐宝棋牌有挂吗... 自定义乐宝棋牌系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分...
玩家终于实锤了!天时棋牌有挂吗... 玩家终于实锤了!天时棋牌有挂吗(分享技巧)原来是有挂的(已更新)(今日头条)1、让任何用户在无需AI...
玩家终于实锤了!边锋陕西麻将有... 自定义边锋陕西麻将系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是...
玩家终于实锤了!天胡麻将有挂吗... 您好,天胡麻将这款游戏可以开挂的,确实是有挂的,需要了解{请加QQ群客服咨询:1075075785}...
玩家终于实锤了!GAME MA... 您好:GAME MALL确实真的有挂,软件请加QQ群客服咨询:1075075785确实是有挂的,很多...