Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以在OpenCV中将像素集合设置为(R,G,B)值吗?_C++_Opencv_Image Processing - Fatal编程技术网

C++ 我可以在OpenCV中将像素集合设置为(R,G,B)值吗?

C++ 我可以在OpenCV中将像素集合设置为(R,G,B)值吗?,c++,opencv,image-processing,C++,Opencv,Image Processing,我一直在尝试通过以下操作将像素集合设置为红色: for(j=0;j<180;j++){ for(i=0;i<180;i++){ cv::Vec3b color =frame.at<cv::Vec3b>(j,i); color[0]=0; color[1]=0; color[2]=255; frame.at<cv::Vec3b>(j,i) = color; } } 用于(j=0;j输入(您案例中的帧)不是CV_8

我一直在尝试通过以下操作将像素集合设置为红色:

for(j=0;j<180;j++){
  for(i=0;i<180;i++){
    cv::Vec3b color =frame.at<cv::Vec3b>(j,i);
    color[0]=0;
    color[1]=0;
    color[2]=255;
    frame.at<cv::Vec3b>(j,i) = color;
  }
}

用于(j=0;j输入(您案例中的帧)不是
CV_8UC3
类型。它必须是
CV_8UC4
这就是为什么RGB模式会在结果图像中重复,因为未引用的第四个通道会导致每个像素的一个字节移位。您必须使用
Vec4b
而不是
Vec3b
,以获得正确的结果。

因此我假设有一个红色通道,蓝色、绿色…但第四个通道是什么?通常是alpha通道(即透明度)。如果您发布图像加载方式(可能是您调用imread)这将有助于找到它。@hariprasad有没有一个页面可以推荐我看一下关于这类东西的返回类型?它可能在已经存在的3.2.0文档中,但我不知道在哪里可以找到它。@Joey除非添加新的算法或优化,否则opencv的文档通常不会从一个版本到另一个版本ed.关于基本数据类型,您可以查看2.4.13文档。当您有这样的功能,并且有多种方式来表示您的投资回报率时,没有什么理由使用循环进行此操作。@DanMašek我假设有函数可以做到这一点,感谢您为我指出它们!好奇心有时会让我感觉最好:)