opencv与Image以及numpy转换和显示【附代码】

简介: 笔记

opencv读取图像并显示


1. import cv2
2. from PIL import Image
3. 
4. img = cv2.imread('dog.jpg') # 用opencv读取图像
5. cv2.imshow("img",img)
6. cv2.waitKey(0)

1.png

opencv转Image


import cv2
from PIL import Image
img = cv2.imread("dog.jpg")
'''
因为opencv读取图像为BGR,在Image是RGB,所以要进行通道转换
'''
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
img = Image.fromarray(img)
img.show()


image.png

Image读取和显示图像


from PIL import Image
img = Image.open("dog.jpg")
img.show()

Image转numpy


from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
img = Image.open("dog.jpg")
img = np.array(img)
plt.title("img")
plt.imshow(img)
plt.show()

image.png

Image转opencv


import cv2
from PIL import Image
import numpy as np
img = Image.open("dog.jpg")
img = cv2.cvtColor(np.array(img), cv2.COLO_RGB2BGR)
cv2.imshow(img)
cv2.waitKey(0)

image.png

将上述代码进行了一个整合,可以直接在终端以命令方式进行图片的显示


如你想用opencv读取图像并显示,终端输入以下命令


python test.py --mode cv2 --image "dog.jpg"

例如你想用opencv读取图像,用Image进行显示,可以输入以下命令:


python test.py --mode cv2 --image "dog.jpg" --cv2Image

如果你想用Image读取图像并显示,终端输入以下命令

python test.py --mode Image --image "dog.jpg"

如果你想用Image读取图像用plt.show显示,终端输入以下命令:


python test.py --mode Image --image "dog.jpg" --PIL2numpy

如果你想用Image读取图像并用opencv显示,终端输入以下命令:


python test.py --mode Image --image "dog.jpg" --PIL2cv
import cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import argparse
def CV_image(opt):
    print("图像路径:", opt.image)
    img = cv2.imread(opt.image)
    if img is None:
        print("打开图像失败")
    if not opt.cv2Image:
        cv2.imshow("image", img)
        cv2.waitKey(0)
    if opt.cv2Image:
        '''
        因为cv读取的图像是BGR格式,Image显示需要RGB,所以要转换一下
        '''
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        img = Image.fromarray(img)
        img.show(title='img')
def Image_image(opt):
    img = Image.open(opt.image)
    if opt.PIL2numpy:
        img = np.array(img)
        plt.title("img")
        plt.axis('off') # 可以关闭坐标系
        plt.imshow(img)
        plt.show()
    elif opt.PIL2cv:
        img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
        cv2.imshow("img", img)
        cv2.waitKey(0)
    else:
        img.show(title='image')
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--mode', type=str, default='cv2', help='read image mode,you can choose cv2 or Image')
    parser.add_argument('--image', type=str, default=' ', help='image path')
    parser.add_argument('--PIL2numpy', action='store_true', default=False, help='PIL2numpy')
    parser.add_argument('--cv2Image', action='store_true', default=False, help='opencv 2 Image show ')
    parser.add_argument('--PIL2cv', action='store_true', default=False, help='Image 2 opencv show')
    opt = parser.parse_args()
    if opt.mode == 'cv2':
        CV_image(opt)
    if opt.mode == 'Image':
        Image_image(opt)
目录
相关文章
|
机器学习/深度学习 存储 算法
OpenCV与NumPy:图像处理中的黄金组合
【4月更文挑战第17天】OpenCV和NumPy是Python图像处理的两大利器,互补协作形成黄金组合。OpenCV专注计算机视觉,提供丰富算法,而NumPy擅长数值计算和数组操作。两者无缝对接,共同实现高效、灵活的图像处理任务。通过灰度化、二值化、边缘检测等案例,展示了它们的协同作用。未来,这一组合将在计算机视觉和机器学习领域发挥更大作用,解锁更多图像处理潜力。
|
数据安全/隐私保护 计算机视觉 开发者
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
331 0
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
|
计算机视觉 Python
【opencv】图像数据类型由numpy转为tensor后颜色改变
【opencv】图像数据类型由numpy转为tensor后颜色改变
414 1
【opencv】图像数据类型由numpy转为tensor后颜色改变
|
Python
python 录屏软件(配合pillow、opencv-python、numpy、pynput)打包后可以直接录屏,清晰度很不错哦
python 录屏软件(配合pillow、opencv-python、numpy、pynput)打包后可以直接录屏,清晰度很不错哦
417 0
python 录屏软件(配合pillow、opencv-python、numpy、pynput)打包后可以直接录屏,清晰度很不错哦
|
计算机视觉 Python
编译OpenCV:cv2.cpp:23:33: fatal error: numpy/ndarrayobject.h: 没有那个文件或目录
编译OpenCV:cv2.cpp:23:33: fatal error: numpy/ndarrayobject.h: 没有那个文件或目录
172 0
|
计算机视觉
Python-OpenCV图像处理-02-numpy数组操作
Python-OpenCV图像处理-02-numpy数组操作
299 0
|
计算机视觉 Python
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
217 0
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
|
数据可视化 IDE 开发工具
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
1142 0
|
算法 数据挖掘 计算机视觉
使用Numpy和Opencv完成图像的基本数据分析(Part IV)
使用Numpy和Opencv完成图像的基本数据分析第四部分,主要包含阈值法、边缘检测、线型检测等操作
2026 0
|
1月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
271 1

热门文章

最新文章