gpt4 book ai didi

opencv - 转换为 hsv 后如何获取特定像素的值?

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

我创建了一个小程序,通过将图像转换为 hsv 来检测红色。为了检测红色,我使用最小范围 170,160,160 和最大范围 180,255,255。所以我得到了白色显示红色的 hsv 图像。现在我想知道那个白色像素的值。我知道 x,y 坐标。如何获得像素值?我正在使用 python 和 cv2。

最佳答案

所以你已经有了 x 和 y,

-> 只需创建 1X1 大小的 ROI Mat

-> 使用 CvtColor() 转换 HSV 颜色空间

-> 获取上述结果的像素值

Mat image; //load image here
Mat HSV;
Mat RGB=image(Rect(x,y,1,1)); // use your x and y value

cvtColor(RGB, HSV,CV_BGR2HSV);
Vec3b hsv=HSV.at<Vec3b>(0,0);
int H=hsv.val[0]; //hue
int S=hsv.val[1]; //saturation
int V=hsv.val[2]; //value

您可以引用下面的 C++ 代码,它将显示鼠标位置对应像素的 RGB 和 HSV 值。

char window_name[30] = "HSV Segmentation";
Mat src;

static void onMouse( int event, int x, int y, int f, void* ){
Mat image=src.clone();
Vec3b rgb=image.at<Vec3b>(y,x);
int B=rgb.val[0];
int G=rgb.val[1];
int R=rgb.val[2];

Mat HSV;
Mat RGB=image(Rect(x,y,1,1));
cvtColor(RGB, HSV,CV_BGR2HSV);

Vec3b hsv=HSV.at<Vec3b>(0,0);
int H=hsv.val[0];
int S=hsv.val[1];
int V=hsv.val[2];

char name[30];
sprintf(name,"B=%d",B);
putText(image,name, Point(150,40) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,255,0), 2,8,false );

sprintf(name,"G=%d",G);
putText(image,name, Point(150,80) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,255,0), 2,8,false );

sprintf(name,"R=%d",R);
putText(image,name, Point(150,120) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,255,0), 2,8,false );

sprintf(name,"H=%d",H);
putText(image,name, Point(25,40) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,255,0), 2,8,false );

sprintf(name,"S=%d",S);
putText(image,name, Point(25,80) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,255,0), 2,8,false );

sprintf(name,"V=%d",V);
putText(image,name, Point(25,120) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,255,0), 2,8,false );

sprintf(name,"X=%d",x);
putText(image,name, Point(25,300) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,0,255), 2,8,false );

sprintf(name,"Y=%d",y);
putText(image,name, Point(25,340) , FONT_HERSHEY_SIMPLEX, .7, Scalar(0,0,255), 2,8,false );

//imwrite("hsv.jpg",image);
imshow( window_name, image );
}



int main(){
src = imread("bgr.png",1);
imshow(window_name,src);
setMouseCallback( window_name, onMouse, 0 );
waitKey();
}

enter image description here

关于opencv - 转换为 hsv 后如何获取特定像素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22257477/

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