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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
为什么在OpenCV中打印像素的颜色时会得到垃圾值而不是RGB?_Opencv_Pixel_Mat - Fatal编程技术网

为什么在OpenCV中打印像素的颜色时会得到垃圾值而不是RGB?

为什么在OpenCV中打印像素的颜色时会得到垃圾值而不是RGB?,opencv,pixel,mat,Opencv,Pixel,Mat,这段代码打印出垃圾值 cv::Mat_<cv::vec3b>::iterator it = img.begin<cv::vec3b>(), itEnd = img.end<cv::vec3b>(); for(; it != itEnd; ++it) std::cout << (*it)[1] << std::endl; cv::Mat\uuz::iterator it=img.begin(), itEnd=img.end();

这段代码打印出垃圾值

cv::Mat_<cv::vec3b>::iterator it = img.begin<cv::vec3b>(),
itEnd = img.end<cv::vec3b>();

for(; it != itEnd; ++it)
   std::cout << (*it)[1] << std::endl;
cv::Mat\uuz::iterator it=img.begin(),
itEnd=img.end();
for(;it!=itEnd;++it)

std::cout我不确定OpenCV是否正确,但如果向量中的每个元素的格式都是[221123321],那么可以根据“,”分隔符单独拆分字符串,您可以检索单独的像素值

我的理解是:

 #include<sstream>

 string buf;

 cout<<"Printing elements:"<<endl;

 for(unsigned i=0;i<img.size();i++)
 {
   istringstream is(img[i]);

   while(getline(is, buf, ','))
   {
     if(buf.at(0)=='[')
     {
       buf.erase(0, 1);
     }
     if(buf.at(buf.length()-1)==']')
     {
       buf.erase(buf.length()-1, buf.length());
     }
     cout<<buf<<endl;
   }  
 }
#包括
字符串buf;

我能正确地得到三组像素值。例如,它打印。。。[203, 208, 209] [205, 209, 210]... 当我想通过执行(*it).val[0]单独访问RGB颜色时,我得到� 和其他奇怪的字符。@web_忍者在打印时试着转换成int
int((*it).val[0])
。@Kiro这很有效。我在uchar中存储类型转换值时出错。它打印了与int等价的ascii。