Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改标题时,图像的打开方式不同_Python_Image_Opencv - Fatal编程技术网

Python 更改标题时,图像的打开方式不同

Python 更改标题时,图像的打开方式不同,python,image,opencv,Python,Image,Opencv,我有一个正在打开的图像路径列表,并使用此列表显示: for path in image_paths: print 'Path for the this image is: "{}"'.format(path) img = cv2.imread(path) cv2.imshow("",img) cv2.waitKey(250) cv2.destroyAllWindows() 它在屏幕中央打开每个图像250毫秒

我有一个正在打开的图像路径列表,并使用此列表显示:

    for path in image_paths:
        print 'Path for the this image is: "{}"'.format(path)
        img = cv2.imread(path)
        cv2.imshow("",img)
        cv2.waitKey(250)
        cv2.destroyAllWindows()
它在屏幕中央打开每个图像250毫秒,然后按预期移动到下一个图像。当我将
cv2.imshow(“,img)
的第一个参数更改为
cv2.imshow(“图像{}”.format(路径[-7:-4]),img)
时,将显示标题“图像001”、“图像XYZ”等,打开的图像不同:

第一个在中间的ish屏幕中打开,第二个稍微向右和向下打开,依此类推,直到它达到某种极限并跳到某个不可见帧的左上角。为什么会发生这种情况?

cv2.imshow()
在窗口中显示图像,但第一个参数(窗口标题)用于创建不同的窗口

当对
cv2.imshow()
的多个调用使用相同的窗口标题时,如中所示:

OpenCV创建一个单独的窗口(名称为空),每次显示新图像时都会重复使用该窗口

另一方面,在循环中调用
cv2.imshow(“image{}.format(path[-7:-4]),img)
将为循环的每次迭代生成不同的窗口标题,这反过来又会在每次调用时创建一个新窗口。因此,您看到的是预期的行为

如果希望多个窗口显示在屏幕的同一位置,只需在
cv.imshow()之后调用
cv.moveWindow()
,并使用适当的屏幕坐标:

window_title = "image {}".format(path[-7:-4])
cv2.imshow(window_title, img)
cv2.moveWindow(window_title, 0, 0)
cv2.imshow()
在窗口中显示带有作为第一个参数传递的标识符的图像。如果不存在这样的窗口,则创建该窗口,并将其标题设置为标识符

请注意,窗口标识符和窗口标题通常是不同的!如果要在同一窗口中显示多个具有不同标题的图像,可以在
imshow
中使用一些固定字符串。然后调用
cv2.setWindowTitle
将标题更新为您想要的内容

window_title=“image{}”。格式(路径[-7:-4])
cv2.imshow(“唯一窗口标识符”,img)
cv2.setWindowTitle(“唯一的窗口标识符”,窗口标题)
使用另一个
imshow
呼叫,您可以更新图像,使用另一个
setWindowTitle
可以更新标题:

cv2.imshow(“唯一窗口标识符”,img2)
cv2.setWindowTitle(“唯一窗口标识符”,窗口标题2)

请注意,
“unique\u window\u identifier”
字符串从未向用户显示,因此您可以在此处使用任何需要的unqiue字符串。

OpenCV使用标题来区分多个窗口。在第一种情况下,您正在重用同一个窗口(因为标题保持不变)。在第二种情况下,标题会发生变化,因此会为每个图像创建一个新窗口。哦,即使我使用不同的标题,是否有一个选项来修复位置?我会给出一个快照。
window_title = "image {}".format(path[-7:-4])
cv2.imshow(window_title, img)
cv2.moveWindow(window_title, 0, 0)