我有一个关于代码和平的问题.
...............
cv::Mat image;
image = cv::imread(filename.c_str(), CV_LOAD_IMAGE_COLOR);
if (image.empty()) {
std::cerr << "Couldn't open file: " << filename << std::endl;
exit(1);
}
cv::cvtColor(image, imageRGBA, CV_BGR2RGBA);
imageGrey.create(image.rows, image.cols, CV_8UC1);
*inputImage = (uchar4 *)imageRGBA.ptr<unsigned char>(0);
*greyImage = imageGrey.ptr<unsigned char>(0);
Run Code Online (Sandbox Code Playgroud)
据我所知,我们创建了一个openCV mat对象.将图像读入其中.但是为什么我们使用filename.c_str()?而不只是文件名?为什么我们将BGR转换为RGBA?
cv::cvtColor(image, imageRGBA, CV_BGR2RGBA);我在文档中读到imread将图像读取为RGB而不是BGR.对我们来说最令人困惑的是这部分:
*inputImage = (uchar4 *)imageRGBA.ptr<unsigned char>(0);
*greyImage = imageGrey.ptr<unsigned char>(0);
Run Code Online (Sandbox Code Playgroud)
这里发生了什么事?为什么我们需要所有这些演员?我知道这是一个很多问题,但我真的想知道这里发生了什么.)
例如,如果我们在python中有一个数组arr = [1,3,4].我们可以通过使用arr.remove(element)ot 来删除数组中的元素,arr.pop()并且list将变异,并且它的长度将会改变,并且该元素将不会存在.有没有办法做到这一点是C ot C++?如果是,该怎么做?