cv::imshow windows不显示
时间: 2023-09-29 22:07:06 浏览: 157
如果cv::imshow的窗口没有显示,有几种可能的原因:
1. imshow的窗口太小或太大,已经超出了屏幕的范围。可以通过resizeWindow函数调整窗口大小。
2. 程序运行太快,窗口没有时间显示出来。可以在imshow之后加上waitKey函数,让程序暂停等待用户输入,直到用户按下任意键才继续执行。
3. 程序中有多个imshow语句,但是窗口的名字相同,导致窗口被覆盖。可以通过给每个窗口指定唯一的名字来解决此问题。
4. 没有正确初始化OpenCV库。在使用OpenCV函数之前,需要调用cv::namedWindow函数创建窗口。
5. 程序中使用了多线程或多进程,导致imshow的窗口无法显示。可以在主线程或进程中使用imshow函数,或者使用线程同步机制来保证窗口的正确显示。
相关问题
这段代码怎么能显示框架XY坐标点=// 截屏 saveDesktopImage(acquiredDesktopImage, device, deviceContext, &img); doneWithFrame(desktopDupl); if (acquiredDesktopImage) { acquiredDesktopImage->Release(); acquiredDesktopImage = nullptr; } cv::cvtColor(img, img, cv::COLOR_RGBA2RGB); //resize图片 cv::resize(img, img, cv::Size(640, 640)); // 创建窗口 cv::namedWindow("Display", CV_WINDOW_AUTOSIZE); //显示图像 cv::imshow("Display", img); ////暂停,等待按键结束 cv::waitKey(0);
这段代码是使用OpenCV库来显示桌面截图的。以下是每行代码的解释:
```cpp
// 截屏
saveDesktopImage(acquiredDesktopImage, device, deviceContext, &img);
// 完成帧的处理
doneWithFrame(desktopDupl);
// 释放已获取的桌面图像
if (acquiredDesktopImage) {
acquiredDesktopImage->Release();
acquiredDesktopImage = nullptr;
}
// 将图像从RGBA转换为RGB格式
cv::cvtColor(img, img, cv::COLOR_RGBA2RGB);
// 调整图像大小为640x640
cv::resize(img, img, cv::Size(640, 640));
// 创建窗口
cv::namedWindow("Display", CV_WINDOW_AUTOSIZE);
// 显示图像
cv::imshow("Display", img);
// 等待按键结束
cv::waitKey(0);
```
其中,前三行代码是从Windows桌面获取截图,并释放已获取的桌面图像,第四行代码将RGBA格式的图像转换为RGB格式,第五行代码调整图像大小为640x640,第六行代码创建一个名为"Display"的窗口,第七行代码显示图像,最后一行代码等待用户按键结束程序。
import cv2 img = cv2.imread('D:/Download/windows_v1.6.0/img/99.jpg') # 垂直翻转 flipped_img1 = cv2.flip(img, 0) # 水平翻转 flipped_img2 = cv2.flip(img, 1) # 显示结果图像 cv2.imshow('xx', img) cv2.imshow('Image1', flipped_img1) cv2.imshow('Image1', flipped_img2) cv2.waitKey(0) cv2.destroyAllWindows()
这段代码使用了Python的OpenCV库,实现了读取一张图片并进行垂直翻转、水平翻转的操作,最后将三张图像显示出来并等待键盘输入。
具体的实现步骤如下:
1. 导入OpenCV库
```python
import cv2
```
2. 读取一张图片
```python
img = cv2.imread('D:/Download/windows_v1.6.0/img/99.jpg')
```
使用cv2.imread()函数读取指定路径下的图像文件,返回一个numpy数组,该数组包含了图像的像素信息。
3. 进行垂直翻转
```python
flipped_img1 = cv2.flip(img, 0)
```
使用cv2.flip()函数对读取到的图像进行垂直翻转,第二个参数为0表示垂直翻转,为1表示水平翻转。
4. 进行水平翻转
```python
flipped_img2 = cv2.flip(img, 1)
```
使用cv2.flip()函数对读取到的图像进行水平翻转。
5. 显示结果图像
```python
cv2.imshow('xx', img)
cv2.imshow('Image1', flipped_img1)
cv2.imshow('Image1', flipped_img2)
```
使用cv2.imshow()函数显示图像,第一个参数为窗口名称,第二个参数为要显示的图像。
6. 等待键盘输入,关闭所有窗口
```python
cv2.waitKey(0)
cv2.destroyAllWindows()
```
使用cv2.waitKey()函数等待键盘输入,参数为0表示无限期等待,直到键盘有输入为止。使用cv2.destroyAllWindows()函数关闭所有打开的窗口。
阅读全文