问题描述
实验环境:Mac + CLion
我是在Clion中调用OpenCV库函数imshow()
时发现不能显示窗口标题,接着我又发现不能同时显示图片窗口,例如程序如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread("/xxx/xx/1.jpg");
Mat image1 = imread("/xxx/xx/2.jpg");
imshow("图片1",image);
imshow("图片2",image1);
waitKey(0);
return 0;
}
发现只能显示图片2的窗口,而且窗口没有“图片2”的标题,我就很困惑,因为有时需要同时显示多张图片,进行比较。如果不能同时显示多张图片窗口,那么就很不方便,而且如果窗口没有标题名,也分不清图片到底是哪张。
注:即便用了namedWindow()函数也是不管用。
解决方法
经过我的多次实验,发现问题在于函数imshow()
,我们在VS编译器中,可以在这个函数中将窗口标题名写成中文,例如我上面的代码。但是在Clion中将窗口标题名写为中文就行不通了,如果写成中文,就会出现上述问题:1、无法同时显示多个图片窗口;2、无法显示窗口标题名。
所以将上述代码中的imshow()函数的窗口标题名换成英文即可,如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat image = imread("/xxx/xx/1.jpg");
Mat image1 = imread("/xxx/xx/2.jpg");
// ** 注意此处变化 **
imshow("ImageOne",image);
imshow("ImageTwo",image1);
waitKey(0);
return 0;
}
总结
如有表达不当或错误之处,请留言指正。