gpt4 book ai didi

c++ - 在进行 RGBtoHSV 转换 OpenCv 后知道像素值

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

我试图获取图像的 H、S 和 V 值,所以我将 RGB 图像转换为 HSV,然后只询问所需的值,然后打印它们。我不太确定我做对了,因为当打印值(hsV 的 V)时,我得到 100+ 的值并且我知道 V 刚好变为 0-100,也许我没有使用正确的方法,这是代码:

#include "opencv/highgui.h"
#include "opencv/cv.h"
#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char** argv) {
int i=0,total=0;
IplImage* img = cvLoadImage( argv[1] );
IplImage* hsv;
CvSize size;
int key = 0, depth;


size = cvGetSize(img);
depth = img->depth;
hsv = cvCreateImage(size, depth, 3);

cvCvtColor( img, hsv, CV_BGR2HSV );

for(i=0;i<480;i++){ //asking for the values in \ form (1,1)(2,2),...(480,480)
CvScalar s;

s = cvGet2D(hsv,i,i);
printf("s=%f\n,s.val[2]); //s.val[2] equals to hs**V** right?
}
cvReleaseImage(&img);
cvReleaseImage(&val);
return 0;
}

最佳答案

这里的另一个答案是正确的,但这是我必须在 opencv 中计算 V channel 的代码片段。我从 Gimp 应用程序获取值,此函数为我提供 opencv 值。

//Max values: App HSV H=360 S=100 V=100 OpenCV H=180 S=255 V=255
double newHSV(double value)
{
//new_val = value * opencv_max_range / other_app_max_range
double newValue = value * 255 / 100;
return newValue;
}

要在另一个应用程序(如 Gimp)中检查您的 opencv HSV 值,只需计算公式:

gimp_value = opencv_value * other_app_max_range / opencv_max_range

关于c++ - 在进行 RGBtoHSV 转换 OpenCv 后知道像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828462/

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