【发布时间】:2017-09-08 10:14:07
【问题描述】:
在一个全局 matplotlib 图中,我想要一些 不同 大小的子图。例如,一个子图应该是从 opencv2(网络摄像头)捕获的帧的确切大小,另一个应该是从该帧获得的较小图像。
我有两个不同的问题,都是关于尺寸的:
- 我知道我可以指定 plt.figure 的 figSize,但是如何为每个子图 (fig.add_subplot) 设置不同的子图大小?
- opencv 的框架带有像素,我怎样才能使子图显示完全相同的图像(大小),特别是因为 matplotlib 使用英寸作为尺寸?
获取框架:
import cv2
import matplotlib.pyplot as plt
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
构建图形和子图:
fig = plt.figure()
img = fig.add_subplot(121)
img2 = fig.add_subplot(122)
然后将框架放入子图
img.imshow(frame) #this should be the original size of captured frame
#take out a square of the frame, and plot with box dimensions
#img2.imshow(box)
干杯!
----- 编辑 ------
虽然我将使用网络摄像头拍摄图像,但我的问题的核心如下: 1.用opencv打开图片 2. 将图像绘制成一个子图,与 opencv 读取的图像具有相同的尺寸
代码:
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('flower.jpg')
cv2.imshow('img',img)
fig = plt.figure()
video_plot = plt.subplot2grid((10, 10), (0, 0)) #Here I need to specify the same size as original
video = video_plot.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
cv2.waitKey(0)
cv2.destroyAllWindows()
plt.show()
原始256x256图片,用opencv打开读取
较小的图像,如果我省略 colspan 和 rowspan (=1) plt.subplot2grid((10, 10), (0, 0))
更大的图像,如果我最大化 colspan 和 rowspan: plt.subplot2grid((10, 10), (0, 0), colspan=10, rowspan=10)
所以总结一下,如何绘制相同大小的图像?
【问题讨论】:
标签: python opencv matplotlib