{
string pattern_jpg = "D:\1-509\W\.tif";//.jpg 等允许的格式都可以,根据实际情况选择
vector<cv::String> image_files;
cv::glob(pattern_jpg, image_files);
if (image_files.size() == 0)
{
std::cout << "No image files" << std::endl;
}
for (unsigned int frame = 0; frame < image_files.size(); frame++) {//image_file.size()代表文件中总共的图片个数
Mat image = imread(image_files[frame]);
char windowname[100];
sprintf(windowname,"window%d.tif",frame);
namedWindow(windowname);
double scale=0.3;
vector<Mat> images;
images.emplace_back(cv::imread(image_files[frame]));
Size dsize = Size(imread(image_files[frame]).cols * scale, imread(image_files[frame]).rows * scale);
Mat image2 = Mat(dsize, CV_32S);
resize(imread(image_files[frame]), image2, dsize);
if(imread(image_files[frame]).rows>1000)
{
imshow(windowname, image2);
waitKey(1000);
}
else
{
imshow(windowname,image);
waitKey(1000);
}
}
}
Windows 已在 1.exe 中触发一个断点。
其原因可能是堆被损坏,这说明 1.exe 中或它所加载的任何 DLL 中有 Bug。
原因也可能是用户在 1.exe 具有焦点时按下了 F12。
输出窗口可能提供了更多诊断信息。
####最终是想让图片正常显示并且不会报错。
我擦,你这代码一言难尽。
首先,你每个循环打印一下文件名image_files[frame],看看是不是文件名不对。
其次,每次循环,你都无数次imread(image_files[frame])从磁盘读文件,要虐死磁盘的节奏。每次循环只要一次就可以,将图像放到一个对象里Mat image=imread(...)。