我目前正致力于阅读图像并将其显示在窗口中。我已成功完成此操作,但在显示图像时,窗口只允许我查看部分图像 完整的图像。我尝试在加载后保存图像,并保存整个图像。所以我相当肯定它正在阅读整个图像。
imgFile = cv.imread('1.jpg')
cv.imshow('dst_rt', imgFile)
cv.waitKey(0)
cv.destroyAllWindows()
图像:
截图:
答案 0 :(得分:30)
看起来图像太大,窗口根本不适合屏幕。
创建带有cv2.WINDOW_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()
According to the OpenCV documentation CV_WINDOW_KEEPRATIO
标志应该做同样的事情,但它没有,它的值甚至没有出现在python模块中。
答案 1 :(得分:3)
这可以帮助您
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image ); // Show our image inside it.
答案 2 :(得分:1)
在openCV中,每当您尝试显示超出显示分辨率的超大图像或图像时,都会出现裁剪显示。这是默认行为
为了在您选择的窗口中查看图像,openCV鼓励使用命名窗口。请参阅namedWindow documentation
名为Window的函数创建了一个窗口,可用作图像和轨迹栏的占位符。创建的窗口以其名称引用。
cv.namedWindow(name, flags=CV_WINDOW_AUTOSIZE)
其中每个窗口通过名称arg与图像容器相关,请确保使用相同的名称
例如:
import cv2
frame = cv2.imread('1.jpg')
cv2.namedWindow("Display 1")
cv2.resizeWindow("Display 1", 300, 300)
cv2.imshow("Display 1", frame)