OpenCV例程(一)

01. 图像的读取(cv2.imread)
02. 图像的保存(cv2.imwrite)
03. 图像的显示(cv2.imshow)
04. 用 matplotlib 显示图像(plt.imshow)

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 使用opencv来显示图像, OpenCV 中彩色图像使用 BGR 格式
img = cv2.imread('test.jpg', flags=1) # 返回的是nparray 多维数组,1:彩色 0:灰度图
cv2.namedWindow('本地小狗', cv2.WINDOW_NORMAL) #定义显示窗口,并设置大小
cv2.resizeWindow('本地小狗',680,500)
cv2.imshow('本地小狗',img)
cv2.waitKey()

# 从网络读取图像
import urllib.request as request

url = 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg1.juimg.com%2F180706%2F330685-1PF60J44225.jpg&refer=http%3A%2F%2Fimg1.juimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1662620230&t=42355f86141f5c6ff64f0e487b585d56'
resp = request.urlopen(url)
img_url = np.asarray(bytearray(resp.read()), dtype="uint8")
img_url = cv2.imdecode(img_url, cv2.IMREAD_COLOR) # imdecode 从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。
cv2.imshow('net_dog', img_url)
cv2.waitKey()
# 把网络小狗保存到本地
cv2.imwrite('netdog.jpg', img_url) # 不能带中文路径
cv2.imencode(".jpg", img_url)[1].tofile('中文路径小狗.jpg') # 可以带中文路径

# 读取带有中文路径的图像
path = '中文.jpg'
img_1 = np.fromfile(path,dtype = 'uint8')
img_1 = cv2.imdecode(img_1,cv2.IMREAD_COLOR)
cv2.imshow('local_dog',img_1)
cv2.waitKey()
cv2.destroyAllWindows()

# 多个图像组合显示
# img_stack = np.hstack((img,img_url,img_1)) # 相同大小图像水平拼接
# cv2.imshow('three dog',img_stack)


# 使用matplotlib显示opencv图像时要把BGR格式转换为RGB格式
img = cv2.imread('test.jpg', 1)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.subplot(2, 2, 1)  # 2行2列,该图位于第1个,也可以不加逗号
plt.title('1.RGB')
plt.axis('off')  # 关闭坐标轴
plt.imshow(img_rgb)

plt.subplot(2, 2, 2)  # 2行2列,该图位于第2个,也可以不加逗号
plt.title('2.BGR')
plt.axis('off')  # 关闭坐标轴
plt.imshow(img)

plt.subplot(2, 2, 3)  # 2行2列,该图位于第3个,也可以不加逗号
plt.title('3.gray')
plt.axis('off')  # 关闭坐标轴
plt.imshow(img_gray, cmap='gray')  # 设置gray参数

plt.subplot(2, 2, 4)  # 2行2列,该图位于第4个,也可以不加逗号
plt.title('4.gray_no_cmap')
plt.axis('off')  # 关闭坐标轴
plt.imshow(img_gray)  # 不设置gray参数

plt.show()


图 1 中 OpenCV 的 BGR 彩色图像已转换为 RGB 格式,彩色图像的颜色显示正常;
图 2 中 OpenCV 的 BGR 彩色图像格式未做转换,彩色图像的颜色显示异常;
图 3 中 plt.imshow() 设置 cmap=‘gray’,灰度图像的颜色显示正常;
图 4 中 plt.imshow() 未设置 cmap=‘gray’,灰度图像的颜色显示异常。

参考自:youcans@qq.com, youcans的OpenCV 例程200篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值