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)
目录
相关文章
|
1月前
|
机器学习/深度学习 存储 算法
OpenCV与NumPy:图像处理中的黄金组合
【4月更文挑战第17天】OpenCV和NumPy是Python图像处理的两大利器,互补协作形成黄金组合。OpenCV专注计算机视觉,提供丰富算法,而NumPy擅长数值计算和数组操作。两者无缝对接,共同实现高效、灵活的图像处理任务。通过灰度化、二值化、边缘检测等案例,展示了它们的协同作用。未来,这一组合将在计算机视觉和机器学习领域发挥更大作用,解锁更多图像处理潜力。
|
1月前
|
数据安全/隐私保护 计算机视觉 开发者
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
57 0
OpenCV中使用NumPy模块操作像素讲解及实战(附源码 超详细)
|
9月前
|
C++ 计算机视觉 Python
vs qt opencv c++图片相片查看编辑工具Image Viewer Image Editer
vs qt opencv c++图片相片查看编辑工具Image Viewer Image Editer
151 0
|
计算机视觉 Python
【opencv】图像数据类型由numpy转为tensor后颜色改变
【opencv】图像数据类型由numpy转为tensor后颜色改变
257 1
【opencv】图像数据类型由numpy转为tensor后颜色改变
|
Python
python 录屏软件(配合pillow、opencv-python、numpy、pynput)打包后可以直接录屏,清晰度很不错哦
python 录屏软件(配合pillow、opencv-python、numpy、pynput)打包后可以直接录屏,清晰度很不错哦
283 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: 没有那个文件或目录
63 0
|
计算机视觉
Python-OpenCV图像处理-02-numpy数组操作
Python-OpenCV图像处理-02-numpy数组操作
146 0
|
计算机视觉 Python
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
127 0
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
|
数据可视化 IDE 开发工具
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
OpenCV可视化界面插件Image Watch(支持VS2012-VS2019)
696 0
|
算法 数据挖掘 计算机视觉
使用Numpy和Opencv完成图像的基本数据分析(Part IV)
使用Numpy和Opencv完成图像的基本数据分析第四部分,主要包含阈值法、边缘检测、线型检测等操作
1894 0