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)
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
Python 图像处理篇-利用opencv库和numpy库读取包含中文路径下的本地图片实例演示
使用Numpy和Opencv完成图像的基本数据分析(Part II)
使用Numpy和Opencv完成图像的基本数据分析后续部分,主要包含逻辑运算符操作、掩膜以及卫星图像数据分析等操作
使用Numpy和Opencv完成图像的基本数据分析(Part I)
随着科技的进步,使用Python包访问数字图像的内部变得更容易理解其属性和性质,掌握对数字图像处理的能力显得是十分有必要。
透视变换是一个很实用的功能,当用手机去拍证件或者名片时,经常会拍歪,或者有边框。如果你使用过类似“扫描全能王”的软件,你应该知道,他们会自动把证件矫正并除边框,它就是通过透视变换实现的,和numpy中的仿射变换一样。 转至 https://zhuanlan.zhihu.com/p/27349847 受 用 base64 进行图片和字符串互转,并保存至 json 作者启发,试了试使用opencv来读取图片,然后用numpy转为list,再转为json格式。 学习Opencv库(一)——基本读写函数的介绍!
OpenCV是一个开源的计算机视觉库,里面封装了很多图像处理方面的优秀算法:例如图片轮廓边缘检测,特征点提取…,可以在Windows,Linux,Mac等平台使用;虽然OpenCv是用 C++ 编写的,并且现在主要接口也是 C++ 语言的但,现在该库也同时提供大量面向 python、matlab以及Java。
带你读《OpenCV 4计算机视觉项目实战 (原书第2版)》之三:学习图形用户界面
本书首先介绍OpenCV的入门知识及安装,然后介绍OpenCV的基础知识,包括用户界面、矩阵运算、滤波器和直方图等,之后介绍复杂的计算机视觉算法,包括对象分割和分类、视频监控、对象跟踪等,后探讨对象跟踪、文本识别、机器学习和人脸检测等高级技术。阅读本书之后,你将掌握常用和新的计算机视觉技术,并学会从零开始构建各类OpenCV项目。