gpt4 book ai didi

Opencv 矩阵值显示

转载 作者:太空宇宙 更新时间:2023-11-03 20:46:31 25 4
gpt4 key购买 nike

这是问题所在:我使用 OpenCV v.2.4.2 加载灰度图像。现在我想知道例如位置 (0,0) 处的像素值。我试过:

Mat image=imread("00001.jpg",1);
cvtColor(image,image,CV_RGB2GRAY);
int a=image.at<unsigned>(0,1);
printf("%d ",a);

这实际上行不通。如何获取任何数据类型(CV_8U、CV_32S ...)的像素值?

谢谢!!!

最佳答案

你在这里犯了两个错误。

在读取图像时,您指定 1 作为输入参数。正如对 imread 的解释,该函数可以读取三种不同格式的图像。

CV_LOAD_IMAGE_UNCHANGED (<0) loads the image as is (including the alpha channel if present) CV_LOAD_IMAGE_GRAYSCALE ( 0) loads the image as an intensity one
CV_LOAD_IMAGE_COLOR (>0) loads the image in the RGB format

对于您的情况,您必须使用 CV_LOAD_IMAGE_GRAYSCALE作为第二个参数

在您使用的下一步中:image.at<unsigned>(0,1);这不对应任何东西。你用<unsigned>但是编译器说“UNSIGNED?UNSIGNED 什么???”

我相信更好的方法是使用正确的标签,例如 CV_LOAD_IMAGE_COLORCV_LOAD_IMAGE_GRAYSCALE .在下面的示例中,我将图像读入一个 channel ( CV_LOAD_IMAGE_GRAYSCALE ),它会自动将其转换为灰度。

#include <cv.h>
#include <highgui.h>

#include <iostream>

using namespace std;
using namespace cv;

int main()
{
Mat gImg = imread("img.png", CV_LOAD_IMAGE_GRAYSCALE);

uchar val;
val = gImg.at<uchar>(0,0);

cout << (int)val << endl;

imshow("showImg",gImg);
cvWaitKey(0);

return 1;
}

关于Opencv 矩阵值显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12512632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com