OpenCV - 迭代向量时的"Invalid paramater"
OpenCV - "Invalid paramater" when iterating through a vector
我试图迭代图像路径的向量,用cv::imread函数读取它们,然后在结果cv::Mat上使用format_signal函数。
#include "tp1.hpp"
using ImagePathFlag = std::pair<std::string, int>;
int main(int /*argc*/, char** /*argv*/) {
try {
const std::vector<ImagePathFlag> vsTestImages = {
{ "data/test1.png",cv::IMREAD_GRAYSCALE },
{ "data/test2.png",cv::IMREAD_GRAYSCALE },
{ "data/test3.png",cv::IMREAD_GRAYSCALE },
{ "data/test4.png",cv::IMREAD_COLOR },
{ "data/test5.png",cv::IMREAD_COLOR },
{ "data/test6.png",cv::IMREAD_COLOR },
{ "data/test7.png",cv::IMREAD_COLOR },
{ "data/test8.jpg",cv::IMREAD_COLOR },
{ "data/test9.bmp",cv::IMREAD_COLOR },
{ "data/test10.bmp",cv::IMREAD_COLOR },
};
for (const ImagePathFlag& oImagePathFlag : vsTestImages) {
std::cout << oImagePathFlag.first << std::endl;
cv::Mat oInputImg = cv::imread(oImagePathFlag.first, oImagePathFlag.second);
if (oInputImg.empty())
CV_Error_(-1, ("Could not load image at '%s', check local paths", oImagePathFlag.first.c_str()));
std::vector<uint8_t> signal = format_signal(oInputImg);
}
}
catch (const cv::Exception& e) {
std::cerr << "Caught cv::Exceptions: " << e.what() << std::endl;
}
catch (const std::runtime_error& e) {
std::cerr << "Caught std::runtime_error: " << e.what() << std::endl;
}
catch (...) {
std::cerr << "Caught unhandled exception." << std::endl;
}
return 0;
}
format_signal和lz77_encode似乎在第一次迭代或for循环中工作得很好,但是在第一次迭代结束时,程序崩溃并出现以下错误:
在0x00007FFE6E5D4388 (ucrtbase.dll)中未处理的异常inf4710_tp1.exe:传递给函数的参数无效认为无效参数是致命的。
不太清楚这里发生了什么。我承认我不完全理解for循环的语法,因为它是我的老师提供的。
帮忙吗?
编辑
inline std::vector<uint8_t> format_signal(const cv::Mat& oInputImage) {
CV_Assert(!oInputImage.empty() && oInputImage.isContinuous() && (oInputImage.type() == CV_8UC1 || oInputImage.type() == CV_8UC3));
std::vector<uint8_t> vSignal;
cv::imencode(".png", oInputImage, vSignal);
return vSignal;
}
我承认我不完全理解for循环的语法
您正在使用c++ 11及以后版本中可用的基于范围的for循环。它遍历对向量中的每一项。您排除问题了吗?如果有,你能分享一下你目前看到的情况吗?format_signal的作用是什么?在该函数中是否一切正常工作?
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- C++ "error: invalid use of void expression"
- 收到错误"invalid use of non-static data member 'stu::n' "
- Poloniex API "Invalid command" c++ libcurl
- C++模板错误:"invalid explicitly-specified argument for template parameter"
- SDL_CreateTextureFromSurface() "Invalid texture"错误?
- C++ "Invalid use of 'this' in non-member function" ,
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- "fast"或"normal"在"free(): invalid next size (fast)"中是什么意思?
- 如何在Arduino程序中解决"invalid operands of types"?
- 如何'Invalid conversion'和'no match for operator'更正这些 c++ 错误
- 访问函数变体时"Invalid conversion"错误
- 马洛克会在 C++17 年返回"invalid pointer value"吗?
- 出现这种错误的原因是什么"invalid use of non-static data member "
- 指向对象生存期之外的已分配内存的指针是"invalid pointer[s]"还是"pointer[s] to an object"?
- 模板类和'invalid use of incomplete type'错误
- OpenCV - 迭代向量时的"Invalid paramater"