好吧,我是openCV和图像处理的新手,我当然需要帮助。我需要获取Mat的每个像素值。该图像由网络摄像头捕获(实时)。我已经尝试过解决某些人的问题的一些解决方案,但是它不适用于我的项目。这是我的一些代码: Mat blackWhite; Mat binary; Mat distanceTr; cvtColor(frame, blackWhite, CV_BGR2GRAY); GaussianBlur(blackWhite, blackWhite, Size(15,15), 6.5, 6.5); threshold(blackWhite, binary, 80, 255, CV_THRESH_BINARY); Mat invBinary = Scalar(255) - binary; distanceTransform(invBinary, distanceTr, CV_DIST_L2,3);我进行像素值访问,我做到了:for(int i = 0; i < distanceTr.rows; i++){ for(int j = 0; j < distanceTr.cols; j++) { if(distanceTr.at<uchar>(0,0) == 0) { cout << 1; } }}对于网络摄像头节目,我使用 imshow("Project", distanceTr);据我所知,distanceTr是一个灰度图像,所以它是一个1通道图像。根据一些答案,我尝试了.at ,但它不起作用:(我正在做一个测试用例,如果(0,0)像素是黑色,它将打印1。我得到的是未处理的异常错误。你能帮忙吗?非常感谢你。(对不起,英语不好) (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 distanceTransform的输出图像的类型为CV_32FC1,因此每个像素的类型为float。要访问像素值,您必须执行以下操作:if(distanceTr.at<float>(0,0) == 0){ cout<<1;}在opencv documentation中,给出了每个功能参数的描述,例如图像的大小和类型等。 (adsbygoogle = window.adsbygoogle || []).push({}); 09-06 04:15