cvtcolor,openCV问题cvCvtColor如何使用 程序中的fruitjpg是下面的图片
来源:整理 编辑:智能门户 2024-11-07 17:28:58
1,openCV问题cvCvtColor如何使用 程序中的fruitjpg是下面的图片
我试了,加载图像的时候强制转换成灰度图像 IplImage* img = cvLoadImage("fruit.jpg",0);cvCvtColor(img,gray,CV_RGB2GRAY);才能转换成功。
2,opencv 里面的函数cvtColor报错
cvcreateimage(cvgetsize(img), ipl_depth_8u, 0);这句有问题,这个函数是创建一幅图片,最后一个参数代表通道数,但是你定义的图片的通道数是0,是不对的,一般是1或者3cvcanny是对二值图进行检测的,所以img应该是一张二值图,image000保存检测结果,也要是二值图
3,下面代码cvcalcHist第一个参数为什么用而cvcvtColor不用
这就要看函数原型了·~一个传递值,一个传递值的地址。原型中使用&表示这个参数传递本身。//这个函数原型而在函数定义内使用函数调用,则表示传递地址。//这个函数调用&在原型中和函数调用中的意思不是一样的·cv::MatND getHistogram(const cv::Mat &image) //这个表示参数为引用类型,这是函数定义原型cv::cvtColor(image, hue, CV_BGR2HSV); //这个是函数调用,函数的第一个参数的类型是 cv::Matcv::calcHist(&image, 1, channels, cv::Mat(), hist, 1, histSize, ranges);//也是函数调用,第一个参数类型是 cv::Mat *
4,opencv实现彩色图像向灰度图像转换的函数是哪个
cvCvtColor(),是Opencv里的颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换为灰度图像。 函数原型:void cvCvtColor( const CvArr* src, CvArr* dst, int code ); 参数: src 输入的 8-bit,16-bit或 32-bit单倍精度opencv实现彩色图像向灰度图像转换的函数是哪个?cvtColor(彩色影像, 灰度影像, CV_BGR2GRAY);将彩色图像转为灰度图像,cvcvtcolor(原始图像,目标图像,cv_bgr2gray); 记住第三个参数是cv_bgr2gray;还有就是原始图像是rgb的,所以应该是三通道的,目标图像是转换成的灰度图,所以定义的时候是单通道的,希望对您有帮助.
5,编译c代码出现错误
标识符没有声明。CV_BGR2YCrCb是定义在cv.h中吗?范围问题,举个例子 using std::string;或者using namespace std;比#include<string>要大,后者是全部空间这是一个c++操作符的优先级相关的问题。printf("%d\n", d=a>b?(a>c?a:b) );上面这条语句,你的初衷是想把a、b、c三者的最大值赋值给变量 d。这个求最大的值的运算过程应该是这样的:step1:求a和c的最大值 a>c ? a : c得到a和c两者间较大的一个,然后再跟b进行比较。step2:a>b ? (a>c ? a : c) : b //先计算括号里面的内容step3:将第2步的计算结果赋值给 d,然后输出 d = (a>b ? (a>c ? a : c) : b); //由于赋值运算的优先级较高,所以外层加个括号至此,就你给出的这组数据,经过上面这3步,可以求得其中的最大值。但这只能算是一个巧合,原因如下:#include<stdio.h>void main() int a0=5,b0=4,c0=6,d0; int a1=3,b1=4,c1=6,d1; printf("%d,%d,%d, max = %d\n", a0,b0,c0,d0=(a0>b0?(a0>c0?a0:c0):b0)); printf("%d,%d,%d, max = %d\n", a1,b1,c1,d1=(a1>b1?(a1>c1?a1:c1):b1));} //运行结果如下:故为了此程序具有普适性,最好定义一个求最大值的函数,在输出语句的外面求出最大值后再输出:#include<stdio.h>int max(int a, int b, int c) int max = 0; if (a>b && a>c) max = a; if (b>a && b>c) max = b; if (c>a && c>b) max = c; return max;}void main() int a0=5,b0=4,c0=6,d0; int a1=3,b1=4,c1=6,d1; printf("%d,%d,%d, max = %d\n", a0,b0,c0,d0=max(a0,b0,c0)); printf("%d,%d,%d, max = %d\n", a1,b1,c1,d1=max(a1,b1,c1));} //测试结果:
6,opencv中cvCvtColor函数在哪个库
下载opencv source,RGB2Gray部分源码在opencv-4.0.1\modules\imgproc\src\color_rgb.cpp文件中,如下:template<typename _Tp> struct RGB2Gray typedef _Tp channel_type; RGB2Gray(int _srccn, int blueIdx, const float* _coeffs) : srccn(_srccn) static const float coeffs0[] = memcpy( coeffs, _coeffs ? _coeffs : coeffs0, 3*sizeof(coeffs[0]) ); if(blueIdx == 0) std::swap(coeffs[0], coeffs[2]); } void operator()(const _Tp* src, _Tp* dst, int n) const int scn = srccn; float cb = coeffs[0], cg = coeffs[1], cr = coeffs[2]; for(int i = 0; i < n; i++, src += scn) dst[i] = saturate_cast<_Tp>(src[0]*cb + src[1]*cg + src[2]*cr); } int srccn; float coeffs[3]; };其中YF, G2YF, B2YF定义在文件color.hpp中,代码如下://constants for conversion from/to RGB and Gray, YUV, YCrCb according to BT.601const float B2YF = 0.114f;const float G2YF = 0.587f;const float R2YF = 0.299f;cvCvtColor(...),Opencv颜色空间转换函数实现RGB颜色向HSV,HSI等颜色空间转换转换灰度图像参数CV_RGB2GRAYRGBgray具体用线性灰度变换函数:Gray=0.299*R+0.587*G+0.144*B通查看OpenCVdocumentation或者源代码解具体实现1、概况cvcvtcolor(...),是opencv里的颜色空间转换函数,可以实现rgb颜色向hsv,hsi等颜色空间的转换,也可以转换为灰度图像。参数cv_rgb2gray是rgb到gray,参数 cv_gray2rgb是gray到rgb.处理结果是彩色的,则转灰色就是了:void cvcvtcolor( const cvarr* src, cvarr* dst, int code );src输入的 8-bit,16-bit或 32-bit单倍精度浮点数影像。dst输出的8-bit, 16-bit或 32-bit单倍精度浮点数影像。code色彩空间转换的模式,该code来实现不同类型的颜色空间转换。比如cv_bgr2gray表示转换为灰度图,cv_bgr2hsv将图片从rgb空间转换为hsv空间。其中当code选用cv_bgr2gray时,dst需要是单通道图片。当code选用cv_bgr2hsv时,对于8位图,需要将rgb值归一化到0-1之间。这样得到hsv图中的h范围才是0-360,s和v的范围是0-1。2、函数使用范例这里给出将rgb图像转换为灰度和hsv的例子:iplimage *src = cvloadimage("4085_1.jpg",1);//原图iplimage *dst_gray = cvcreateimage(cvgetsize(src),src->depth,1);//灰度图iplimage *dst_image = cvcreateimage(cvgetsize(src),32,src->nchannels);iplimage *src_image_32 = cvcreateimage(cvgetsize(src),32,src->nchannels);//这两个图需要是32浮点位的,因为对原图进行归一化后得到的是浮点数cvcvtcolor(src,dst_gray,cv_bgr2gray);//得到灰度图cvconvertscale(src,src_image_32,1.0/255.0,0);//将原图rgb归一化到0-1之间cvcvtcolor(src_image_32,dst_image,cv_bgr2hsv);//得到hsv图cvCvtColor(...),是Opencv里的颜色空间转换函数
文章TAG:
opencv 问题 如何 使用 cvtcolor 程序中的fruitjpg是下面的图片
大家都在看
-
自动化设备静电过大怎么消除,如何消除静电?
2023-12-15
-
贴片,什么是贴片
2023-12-22
-
数据与信息关系是,数据信息:数据或不能说是信息
2023-12-26
-
浙江设计自动化专业大学,大学自动化设计专业有哪些?
2024-02-25
-
rca自动化组装设备,非标自动化设备有哪些?
2024-03-03
-
硫化碳,硫化碳的化学符号
2024-04-05
-
山东电气自动化专业排名,电气自动化专业院校排名
2024-06-09
-
生产机器人工厂,超级机器人工厂
2024-08-18
-
伐竹自动化设备,景洪竹木加工自动化设备
2024-09-09
-
机器人教育需要什么,码高机器人教育怎么样
2024-09-13
-
扫地机器人吸尘效果
2024-09-29
-
肇庆进口自动化设备厂家,自动化设备中的气动元件比较常用?
2023-12-08
-
广东高压储气罐自动化设备
2023-12-16
-
大数据对自动化专业的影响,自动化专业就业数据
2024-01-04
-
黑河自动化设备批发,自动化设备有哪些?
2024-01-05