gpt4 book ai didi

opencv - 仅在 HSV 系统中访问 V channel

转载 作者:行者123 更新时间:2023-12-02 17:50:53 25 4
gpt4 key购买 nike

我只想显示V channel 图像,所以我写了这个,为什么我尝试这个时失败了?
我可以编译它,但是当我 imshow("V",V); 时我无法执行它

 #include <opencv2/opencv.hpp> 
using namespace cv;
int main(){
Mat image;
Mat V;
namedWindow( "Gray image", 2 );
while(1){
image = imread( "d://Gaa6P.png", 1 );
for (int r=0; r< image.rows; r++ ){
for( int c =0;c< image.cols; c++){
Vec3b intensity= image.at<Vec3b>(r, c);
uchar v=intensity.val[2];
V.at<uchar>(r,c)=v;
}
}
imshow( "Gray image", image );
imshow("V",V);
waitKey(0);
}
return 0; }

谢谢大家,现在可以了。
 #include <opencv2/opencv.hpp> 
using namespace cv;
int main(){
Mat image;
Mat V;
namedWindow( "Gray image", 2 );
while(1){
image = imread( "d://Gaa6P.png", 1 );
cvtColor(image,image,CV_RGB2HSV);
V.create(image.rows,image.cols,CV_8UC1);
for (int r=0; r< image.rows; r++ ){
for( int c =0;c< image.cols; c++){
Vec3b intensity= image.at<Vec3b>(r, c);
uchar v=intensity.val[0];
V.at<uchar>(r,c)=v;
}
}
imshow( "Gray image", image );
imshow("V",V);
waitKey(0);
}
return 0; }

最佳答案

您无法获得 V-channel 中的值直接写float v=intensity[2];因为intensity属于 Vec3f类型。

所以,如果你想访问 V-channel 中的强度值使用以下内容:

float v=intensity.val[2];

那是您的代码中的问题。

其次 ,我建议你使用 <uchar> IE。
Vec3b intensity= HSV.at<Vec3b>(r, c);
然后进行类型转换 将值转换为浮点数,即
float v= (float) intensity.val[2];

关于opencv - 仅在 HSV 系统中访问 V channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21961301/

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