当前位置: 首页 > 知识库问答 >
问题:

试图在OpenCV上操纵图像的饱和度

端木承业
2023-03-14

我试图在OpenCV中创建一个Lpr算法。我将灰度和Canny应用到图像中;但我也需要对图像施加饱和度,这就是我的问题:

void saturation(cv::Mat &img)
{
    Mat imagen;
    cvtColor(img,imagen,CV_RGB2HSV);

    for(int y=0; y<imagen.cols; y++)
    {
        for(int x=0; x<imagen.rows; x++)
        {
            int cur2 = imagen.at<Vec3b>(Point(y,x))[1];
            cur2 += 41;
            if(cur2 < 0) cur2= 0; else if(cur2 > 255) cur2 = 255;
            imagen.at<Vec3b>(Point(y,x))[1] = cur2;
        }
    }

    cvtColor(imagen,img,CV_HSV2RGB);

}

OpenCV错误:断言失败((scn==3 scn==4)&(depth==CV_8U depth==CV_32F))在CVT Color中,文件函数cvtColor

我能知道是什么原因造成的错误吗?

共有1个答案

赵奕
2023-03-14

输入图像的通道数或深度不正确。

src通道应为3或4,深度应为CV_8U或CV_32F

((scn == 3 || scn == 4) && (depth == CV_8U || depth == CV_32F)) 
 类似资料:
  • 目标 访问像素值并修改它们 访问图像属性 设置图像区域(ROI) 分割和合并图像 本节中几乎所有的操作主要涉及到Numpy而不是OpenCV。需要熟悉Numpy才能用OpenCV编写更好的代码。 1、获取并修改像素值 读取一副图像,根据像素的行和列的坐标获取它的像素值,对于RGB图像而言,返回RGB的值,对于灰度图则返回灰度值 import cv2 import numpy img = cv2.i

  • 我在响应式站点上设置了flexSlider。我正在创建的滑块可以拍摄横向和纵向图像。我设置了,以便调整高度以适应图像。 在最大的媒体查询中,flexslider容器的宽度为750px。这对于横向图像很好,但纵向图像太大了。肖像图像的宽度设置为与容器相同的大小-750px宽,因此高度至少是容器宽度的两倍,因此如果不滚动,则无法查看整个图像。 在css中,我尝试设置最大高度:750px,这解决了高度问

  • 我有一个图像,它有一个最大像素值-和最小像素值-我试图使它们在范围之间 我所做的:- 我已经将所有像素值除以最大像素值再乘以255 这使得我的最高像素值为1,但我的最小像素值仍然是负像素值。 这是一个医学图像,所以我想保留每个像素强度,所以我不想在0-255之间剪辑它们 但是我怎么能在不裁剪的情况下把它们放在那个范围内(这会损坏图像结构)。 使用库加载它们,如或自动剪裁像素值。

  • 本文向大家介绍Python OpenCV处理图像之图像像素点操作,包括了Python OpenCV处理图像之图像像素点操作的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python OpenCV图像像素点操作的具体代码,供大家参考,具体内容如下 0x01. 像素 有两种直接操作图片像素点的方法: 第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第

  • 我需要裁剪图像根据边缘我发现(与给定epsilon) 我有以下说明:Opencv c检测并裁剪图像上的白色区域 有了一个变化-我试图根据我从精明的边缘检测器收到的边缘图像找到矩形: 我遇到的问题是,当我到达第139列时,它会因为以下异常而崩溃: Microsoft C异常:cv::内存位置0x000000EB35DEF170处的异常。 但是,当我使用原始图像(而不是边缘图像)时,它会按预期工作。

  • 涉及函数cv2.add(),cv2.addWeighted() 一、图像加法 使用cv2.add()将两幅图像进行加法运算,也可以直接使用numpy,res=img1+img2.两幅图像的大小,类型必须一致,或者第二个图像可以是一个简单的标量值。 openCV的加法是一种饱和操作,而numpy的加法是一种模操作。 x=np.uint8([250]) y=np.uint8([10]) print(c