Python-OpenCV-imread-显示图像

Python-OpenCV-imread-显示图像,python,image,opencv,imshow,Python,Image,Opencv,Imshow,我目前正在阅读图像并将其显示到窗口。我已经成功地做到了这一点,但在显示图像时,窗口只允许我看到图像的一部分 完整图像。加载后我尝试保存图像,它保存了整个图像。所以我相当确定它正在读取整个图像 imgFile = cv.imread('1.jpg') cv.imshow('dst_rt', imgFile) cv.waitKey(0) cv.destroyAllWindows() 图片: 截图: 这可以帮助您 namedWindow( "Display window", CV_WINDOW_

我目前正在阅读图像并将其显示到窗口。我已经成功地做到了这一点,但在显示图像时,窗口只允许我看到图像的一部分 完整图像。加载后我尝试保存图像,它保存了整个图像。所以我相当确定它正在读取整个图像

imgFile = cv.imread('1.jpg')

cv.imshow('dst_rt', imgFile)
cv.waitKey(0)
cv.destroyAllWindows()
图片:

截图:
这可以帮助您

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image );                   // Show our image inside it.

看起来图像太大,窗口根本不适合屏幕。 创建带有
cv2.window\u NORMAL
标志的窗口,它将使其具有可伸缩性。然后,您可以调整其大小以适合您的屏幕,如下所示:

from __future__ import division
import cv2


img = cv2.imread('1.jpg')

screen_res = 1280, 720
scale_width = screen_res[0] / img.shape[1]
scale_height = screen_res[1] / img.shape[0]
scale = min(scale_width, scale_height)
window_width = int(img.shape[1] * scale)
window_height = int(img.shape[0] * scale)

cv2.namedWindow('dst_rt', cv2.WINDOW_NORMAL)
cv2.resizeWindow('dst_rt', window_width, window_height)

cv2.imshow('dst_rt', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

CV\u WINDOW\u KEEPRATIO
标志也应该这样做,但它没有,而且它的值甚至没有显示在python模块中。

在openCV中,每当您尝试显示过大的图像或大于显示分辨率的图像时,您都会得到裁剪的显示。这是默认行为。
为了在您选择的窗口中查看图像,openCV鼓励使用命名窗口。请参阅

函数namedWindow创建一个窗口,该窗口可用作图像和轨迹栏的占位符。创建的窗口通过其名称引用

cv.namedWindow(name,flags=cv\u WINDOW\u AUTOSIZE)
如果每个窗口都通过名称arg与图像容器相关,请确保使用相同的名称

例如:


您使用的是旧版本(新版本名为
cv2
的python模块)。尝试更新它。抱歉,我忘了提到我正在使用cv2作为cv。这段代码看起来不错。你能给我们看一张截图吗?它不允许我将图像添加到我的问题中,但这里有原始图像的链接和结果的屏幕截图。使用浮点屏幕分辨率获得正确缩放的起始图像:
screen\u res=1280,720。
@Marc
from\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu future\import division
查找我需要添加的
cv2.resize(img,(窗口宽度,窗口高度)
cv2.imshow('dst_rt',img)
如果您随后显式调用
resizeWindow()
,那么让
CV\u窗口自动调整大小有意义吗?@javadba您的权利,当我们显式调用
resizeWindow()时,不建议使用
CV\u window\u AUTOSIZE
感谢您捕捉到这一点!这不是Windows\u AUTOSIZE而不是CV\u WINDOW\u AUTOSIZE吗?
import cv2
frame = cv2.imread('1.jpg')
cv2.namedWindow("Display 1")
cv2.resizeWindow("Display 1", 300, 300)
cv2.imshow("Display 1", frame)