我正在尝试编写一个程序,使用 opencv 从图像中读取像素值并在控制台或另一个窗口中打印该值。我的程序已成功编译和链接,但在 Visual stdio 中运行该程序时出现以下错误行。
“Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x0000002F82CFEF60 处的 std::bad_alloc。发生”
我已经尝试过直接运行可执行文件。然后我收到此错误消息“调试错误。about() 已被调用”。 这是我的 main.cpp 代码
'''C++
#include <stdlib.h>
#include <SDL.h>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>
using namespace cv;
int retColorRed(int x, int y)
{
Mat img = imread("s1.jpg", 0);
return img.at<Vec3d>(x, y)[0];
}
int retColorGreen(int x, int y)
{
Mat img = imread("s1.jpg", 0);
return img.at<Vec3b>(x, y)[1];
}
int retColorBlue(int x, int y)
{
Mat img = imread("s1.jpg", 0);
return img.at<Vec3b>(x, y)[2];
}
#define WINDOW_WIDTH 200
#define WINDOW_HEIGHT 300
int main(int argc, char* args[]) {
SDL_Event event;
SDL_Renderer* renderer;
SDL_Window* window;
SDL_Init(SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(WINDOW_WIDTH, WINDOW_HEIGHT, 0,&window, &renderer);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderClear(renderer);
int width = WINDOW_WIDTH;
int height = WINDOW_HEIGHT;
int horizonaltIter = 0, virticalIter = 0;
while (virticalIter <= height)
{
while (horizonaltIter <= width) {
int red = retColorRed(horizonaltIter,virticalIter);
int green = retColorGreen(horizonaltIter, virticalIter);
int blue = retColorBlue(horizonaltIter, virticalIter);
SDL_SetRenderDrawColor(renderer, red, green, blue, 255);
SDL_RenderDrawPoint(renderer, horizonaltIter, virticalIter);
SDL_RenderPresent(renderer);
horizonaltIter++;
}
virticalIter++;
}
while (1) {
if (SDL_PollEvent(&event) && event.type == SDL_QUIT)
break;
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return EXIT_SUCCESS;
}
'''
这是在 Visual Studio ide 中显示的错误信息
“Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x000000A6BD0FF1A0 处的 std::bad_alloc。发生”
最佳答案
更改 while (horizonaltIter <= height) {
至 while (horizonaltIter <= width) {
它应该有效!
关于c++ - Project1.exe 中 0x00007FFCA550A839 处的未处理异常:Microsoft C++ 异常:内存位置 0x0000002F82CFEF60 处的 std::bad_alloc。发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57737725/