问题描述
- 关于opencv的win32下控制台应用问题
-
“ConsoleApplication2.exe”(Win32): 已加载“D:vs_projectConsoleApplication2DebugConsoleApplication2.exe”。已加载符号。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64
tdll.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64kernel32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64KernelBase.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64msvcp140d.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“D:opencvuildx86vc12inopencv_imgproc248.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“D:opencvuildx86vc12inopencv_core248.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“D:opencvuildx86vc12inopencv_highgui248.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64vcruntime140d.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64advapi32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64msvcrt.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64sechost.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64
pcrt4.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64user32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64sspicli.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64gdi32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64cryptbase.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64ucrtbased.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64cryptprimitives.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64ole32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64combase.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64msvcp120.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64msvcr120.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64oleaut32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsWinSxSx86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.10586.0_none_811bc0006c44242bcomctl32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64msvfw32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64avifil32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64avicap32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64shell32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64cfgmgr32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64msacm32.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64winmm.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64windows.storage.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64shlwapi.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64kernel.appcore.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64winmmbase.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64winmmbase.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64winmmbase.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64SHCore.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已卸载“C:WindowsSysWOW64winmmbase.dll”
“ConsoleApplication2.exe”(Win32): 已卸载“C:WindowsSysWOW64winmmbase.dll”
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64powrprof.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64profapi.dll”。无法查找或打开 PDB 文件。
“ConsoleApplication2.exe”(Win32): 已加载“C:WindowsSysWOW64imm32.dll”。无法查找或打开 PDB 文件。
线程 0x4b98 已退出,返回值为 -1 (0xffffffff)。
线程 0x1bf8 已退出,返回值为 -1 (0xffffffff)。
线程 0x4548 已退出,返回值为 -1 (0xffffffff)。
程序“[2572] ConsoleApplication2.exe”已退出,返回值为 -1 (0xffffffff)。报这样的错是什么意思?
源码如下
#include
#include
#include
#include//输入形参为pass by conference-const,保证输入的图像不会被修改,并且为传递引用
void sharpenImage0(const cv::Mat &image, cv::Mat &result)
{
//为输出图像分配内存
result.create(image.size(), image.type());for (int j = 1; j<image.rows - 1; ++j) { const uchar *previous = image.ptr<const uchar>(j - 1); const uchar *current = image.ptr<const uchar>(j); const uchar *next = image.ptr<const uchar>(j + 1); uchar *output = result.ptr<uchar>(j); for (int i = 1; i<image.cols - 1; ++i) { *output++ = cv::saturate_cast<uchar>(5 * current[i] - previous[i] - next[i] - current[i - 1] - current[i + 1]); //saturate_cast<uchar>()保证结果在uchar范围内 } } result.row(0).setTo(cv::Scalar(0)); result.row(result.rows - 1).setTo(cv::Scalar(0)); result.col(0).setTo(cv::Scalar(0)); result.col(result.cols - 1).setTo(cv::Scalar(0));
}
void sharpenImage1(const cv::Mat &image, cv::Mat &result)
{
//创建并初始化滤波模板
cv::Mat kernel(3, 3, CV_32F, cv::Scalar(0));
kernel.at(1, 1) = 5.0;
kernel.at(0, 1) = -1.0;
kernel.at(1, 0) = -1.0;
kernel.at(1, 2) = -1.0;
kernel.at(2, 1) = -1.0;result.create(image.size(), image.type()); //对图像进行滤波 cv::filter2D(image, result, image.depth(), kernel);
}
int main(int argc, char* argv[])
{
cv::Mat image = cv::imread("../boldt.jpg");
cv::Mat image_gray;
image_gray.create(image.size(), image.type());if (!image.data) return -1; if (image.channels() == 3) cv::cvtColor(image, image_gray, CV_RGB2GRAY); cv::Mat result; result.create(image_gray.size(), image_gray.type()); double time_ = static_cast<double>(cv::getTickCount()); sharpenImage0(image_gray, result); time_ = 1000 * (static_cast<double>(cv::getTickCount()) - time_) / cv::getTickFrequency(); std::cout << "time = " << time_ << "ms" << std::endl; cv::namedWindow("Image 1"); cv::imshow("Image 1", result); cv::Mat result1; result1.create(image_gray.size(), image_gray.type()); time_ = static_cast<double>(cv::getTickCount()); sharpenImage1(image_gray, result1); time_ = 1000 * static_cast<double>(cv::getTickCount() - time_) / cv::getTickFrequency(); std::cout << "time = " << time_ << "ms" << std::endl; cv::namedWindow("Image 2"); cv::imshow("Image 2", result1); cv::waitKey(); return 0;
}
解决方案
内存分配的问题,指针的问题等
解决方案二:
继续讨论win32下的多线程编程问题
win32下用mfc的类出现的问题
解决方案三:
在main里设置一个断点,看看哪里退出的,然后再去看调用失败的函数的帮助,看看那个参数有问题。