本文整理汇总了C++中cvMerge函数的典型用法代码示例。如果您正苦于以下问题:C++ cvMerge函数的具体用法?C++ cvMerge怎么用?C++ cvMerge使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cvMerge函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gst_retinex_transform_ip
static GstFlowReturn gst_retinex_transform_ip(GstBaseTransform * btrans, GstBuffer * gstbuf)
{
GstRetinex *retinex = GST_RETINEX (btrans);
GST_RETINEX_LOCK (retinex);
//////////////////////////////////////////////////////////////////////////////
// get image data from the input, which is RGBA or BGRA
retinex->pFrame->imageData = (char*)GST_BUFFER_DATA(gstbuf);
cvSplit(retinex->pFrame,
retinex->ch1, retinex->ch2, retinex->ch3, NULL );
cvMerge(retinex->ch1, retinex->ch2, retinex->ch3, NULL,
retinex->pFrame2);
double sigma = 14.0;
int gain = 128;
int offset = 128;
Retinex( retinex->pFrame2, sigma, gain, offset );
cvSplit(retinex->pFrame2, retinex->ch1, retinex->ch2, retinex->ch3, NULL);
//////////////////////////////////////////////////////////////////////////////
// restore alpha channel from input
cvMerge(retinex->ch1, retinex->ch2, retinex->ch3, retinex->pFrameA,
retinex->pFrame);
GST_RETINEX_UNLOCK (retinex);
return GST_FLOW_OK;
}
示例2: colorizeWinter
// Shade a grayscale image using the "winter" colormap (similar to Matlab's).
void colorizeWinter(IplImage* src, IplImage*& dst, IplImage* mask){
// Create an increasing linear-ramp in the green channel.
cvMerge(NULL, src, NULL, NULL, dst);
// Create a decreasing linear-ramp in the blue channel.
IplImage* blue = cvCloneImage(src);
cvSubRS(src, cvScalar(255.0), blue, mask);
cvMerge(blue, NULL, NULL, NULL, dst);
// Release allocated resources.
cvReleaseImage(&blue);
}
示例3: cvCreateImage
void BModel::wiener_filter(const int r, const double sigma, const double S)
{
IplImage *reKernel = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1);
IplImage *image = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 4);
IplImage *reRImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1);
IplImage *reGImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1);
IplImage *reBImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1);
IplImage *kernel = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2);
IplImage *rImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2);
IplImage *gImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2);
IplImage *bImage = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 2);
IplImage *imaginary = cvCreateImage(cvGetSize(_tempImageSrc), IPL_DEPTH_64F, 1);
cvZero(imaginary);
cvZero(reKernel);
create_kernel(r, sigma, reKernel);
cvConvertScale(_tempImageSrc, image, 1/255.);
cvSplit(image, reRImage, reGImage, reBImage, 0);
cvMerge(reKernel, imaginary, 0, 0, kernel);
cvMerge(reRImage, imaginary, 0, 0, rImage);
cvMerge(reGImage, imaginary, 0, 0, gImage);
cvMerge(reBImage, imaginary, 0, 0, bImage);
wiener_filter_chanel(rImage, kernel, S);
cvSplit(rImage, reRImage, imaginary, 0, 0);
wiener_filter_chanel(gImage, kernel, S);
cvSplit(gImage, reGImage, imaginary, 0, 0);
wiener_filter_chanel(bImage, kernel, S);
cvSplit(bImage, reBImage, imaginary, 0, 0);
cvMerge(reRImage, reGImage, reBImage, 0, image);
cvConvertScale(image, _tempImageDst, 255);
remap_image(_tempImageDst, -r);
change_filt_image();
create_temp_image(_srcImage);
cvReleaseImage(&reKernel);
cvReleaseImage(&image);
cvReleaseImage(&reRImage);
cvReleaseImage(&reGImage);
cvReleaseImage(&reBImage);
cvReleaseImage(&kernel);
cvReleaseImage(&rImage);
cvReleaseImage(&gImage);
cvReleaseImage(&bImage);
cvReleaseImage(&imaginary);
}
示例4: adjustHSV
void adjustHSV(IplImage *&src, int HuePosition, int SaturationPosition, int ValuePosition)
{
int Hue = HuePosition;
double Saturation = SaturationPosition * 2.55;
double Value = ValuePosition / 100.;
//create float image
IplImage *temp = cvCreateImage(cvGetSize(src), IPL_DEPTH_32F, src->nChannels);
cvConvertScale(src, temp, 1.0/255.0, 0);
//split
IplImage* floatingH = cvCreateImage( cvGetSize(src), IPL_DEPTH_32F, 1 );
IplImage* floatingS = cvCreateImage( cvGetSize(src), IPL_DEPTH_32F, 1 );
IplImage* floatingV = cvCreateImage( cvGetSize(src), IPL_DEPTH_32F, 1 );
cvCvtColor(temp, temp, CV_BGR2HSV);//color convert
cvSplit( temp, floatingH, floatingS, floatingV, NULL);
//adjust
cvAddS(floatingH, cvScalarAll(Hue), floatingH);
cvAddS(floatingV, cvScalarAll(Value), floatingV);
//merge
cvZero(temp);
cvMerge(floatingH, floatingS, floatingV, NULL, temp);
cvCvtColor(temp, temp, CV_HSV2BGR);
//save
cvConvertScale( temp, src, 255, 0 );
IplImage *HSV = convertImageRGBtoHSV(src);
IplImage *H = cvCreateImage(cvGetSize(src), src->depth, 1);
IplImage *S = cvCreateImage(cvGetSize(src), src->depth, 1);
IplImage *V = cvCreateImage(cvGetSize(src), src->depth, 1);
cvSplit(HSV, H, S, V, 0);
cvAddS(S, cvScalarAll(Saturation), S);
cvMerge(H, S, V, 0, HSV);
cvReleaseImage(&src);
src = convertImageHSVtoRGB(HSV);
cvReleaseImage(&HSV);
cvReleaseImage(&H);
cvReleaseImage(&S);
cvReleaseImage(&V);
cvReleaseImage(&temp);
cvReleaseImage(&floatingH);
cvReleaseImage(&floatingS);
cvReleaseImage(&floatingV);
}//end HSV
示例5: crop
IplImage* crop(IplImage* src, CvPoint c, int r){
IplImage* res, * roi;
//src = cvLoadImage("x.jpg", 1);
res = cvCreateImage(cvGetSize(src), 8, 3);
roi = cvCreateImage(cvGetSize(src), 8, 1);
/* prepare the 'ROI' image */
cvZero(roi);
/* Note that you can use any shape for the ROI */
cvCircle(
roi,
c,
r,
CV_RGB(255, 255, 255),
-1, 8, 0
);
/* extract subimage */
cvAnd(src, src, res, roi);
/* 'restore' subimage */
IplImage* roi_C3 = cvCreateImage(cvGetSize(src), 8, 3);
cvMerge(roi, roi, roi, NULL, roi_C3);
cvAnd(res, roi_C3, res, NULL);
return res;
}
示例6: equalize_image
void equalize_image(IplImage *img)
{
IplImage *b = NULL;
IplImage *g = NULL;
IplImage *r = NULL;
if (img->nChannels == 1)
{
cvEqualizeHist(img, img);
}
else if (img->nChannels == 3)
{
b = cvCreateImage(cvGetSize(img), 8, 1);
g = cvCreateImage(cvGetSize(img), 8, 1);
r = cvCreateImage(cvGetSize(img), 8, 1);
cvSplit(img, b, g, r, NULL);
cvEqualizeHist(b,b);
cvEqualizeHist(g,g);
cvEqualizeHist(r,r);
cvMerge(b,g,r,NULL,img);
cvReleaseImage(&b);
cvReleaseImage(&g);
cvReleaseImage(&r);
}
}
示例7: YUV_read
enum YUV_ReturnValue
YUV_read(struct YUV_Capture *cap)
{
size_t bytes_read;
size_t npixels;
npixels = cap->width*cap->height;
bytes_read = fread(cap->y->imageData, sizeof(uint8_t), npixels, cap->fin);
if (bytes_read == 0)
return YUV_EOF;
else if (bytes_read != npixels)
return YUV_IO_ERROR;
bytes_read = fread(cap->cb_half->imageData, sizeof(uint8_t), npixels / 4, cap->fin);
if (bytes_read != npixels / 4)
return YUV_IO_ERROR;
bytes_read = fread(cap->cr_half->imageData, sizeof(uint8_t), npixels / 4, cap->fin);
if (bytes_read != npixels / 4)
return YUV_IO_ERROR;
cvResize(cap->cb_half, cap->cb, CV_INTER_CUBIC);
cvResize(cap->cr_half, cap->cr, CV_INTER_CUBIC);
cvMerge(cap->y, cap->cr, cap->cb, NULL, cap->ycrcb);
return YUV_OK;
}
示例8: draw
void draw(int dummy)
{
//delaunay
cvClearMemStorage(storage);
subdiv=cvCreateSubdivDelaunay2D(rect,trianglestore);
blur(origV, out);
SWAP(in,out);
thresh(in, out);
findContours(out, storage, &contours);
cvMerge(origH, origS, out, NULL, temp);
cvCvtColor( temp, temp, CV_HSV2RGB );
every_contour(contours, temp);
drawContour(temp, contours);
SWAP(in,out);
draw_subdiv(temp,subdiv, cvScalar(255,255,255,255));
if(k==0)
{
cvNot(in,out);
//k=1;
}
else{}
cvClearMemStorage(trianglestore);
//findcorners(origH,out); //needs 32bit float image
cvShowImage(OUT, temp);
}
示例9: customizeImage
bool _stdcall customizeImage(LPWSTR csInputPath, LPWSTR csOutputPath, int *values, bool isGray)
{
char inputPath[SIZE] = "";
WideCharToMultiByte(950, 0, csInputPath, -1, inputPath, SIZE, NULL, NULL);//wchar_t * to char
char outputPath[SIZE] = "";
WideCharToMultiByte(950, 0, csOutputPath, -1, outputPath, SIZE, NULL, NULL);//wchar_t * to char *
IplImage *img = cvLoadImage(inputPath, 1);
if(!img)
return false;
else
{
if(isGray)
{
IplImage *gray = cvCreateImage(cvGetSize(img), img->depth, 1);
cvCvtColor(img, gray, CV_BGR2GRAY);
cvMerge(gray, gray, gray, 0, img);
cvReleaseImage(&gray);
}//end if
adjustRGB(img, values[0], values[1], values[2]);
adjustHSV(img, values[3], values[4], values[5]);
adjustBrightnessContrast(img, values[6], values[7]);
cvSaveImage(outputPath, img);
cvReleaseImage(&img);
return true;
}//end else
return false;
}//end combineImage
示例10: ocv_histogramac1
IplImage *ocv_histogramac(IplImage *image) {
if (!image) { present(1, "!image"); return NULL; }
IplImage *iplImageOut = NULL;
if (image->nChannels == 1) {
iplImageOut = ocv_histogramac1(image);
} else if (image->nChannels == 3) {
IplImage *iplImgIR = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
IplImage *iplImgIG = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
IplImage *iplImgIB = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
cvSplit(image, iplImgIR, iplImgIG, iplImgIB, NULL);
IplImage *iplImgOR = ocv_histogramac1(iplImgIR);
IplImage *iplImgOG = ocv_histogramac1(iplImgIG);
IplImage *iplImgOB = ocv_histogramac1(iplImgIB);
cvReleaseImage(&iplImgIR);
cvReleaseImage(&iplImgIG);
cvReleaseImage(&iplImgIB);
iplImageOut = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 3);
cvMerge(iplImgOR, iplImgOG, iplImgOB, NULL, iplImageOut);
cvReleaseImage(&iplImgOR);
cvReleaseImage(&iplImgOG);
cvReleaseImage(&iplImgOB);
}
return iplImageOut;
}
示例11: ASSERT
/// <summary>
///光照归一化处理
///1.转换色彩空间到HSV空间;
///2.把HSV空间的V值设置为固定的值IlluminationThreshold;
///3.再从HSV空间转换到RGB空间;
/// </summary>
void CLightSet::LightNormalization(IplImage* src, IplImage* dst, int threshold){
ASSERT(src->nChannels==3);
//转换色彩空间
cvCvtColor(src,dst,CV_RGB2HSV);
//分离通道
IplImage* imgChannel[3] = { 0, 0, 0 };
for (int i=0;i<dst->nChannels;i++)
{
imgChannel[i] = cvCreateImage(cvGetSize( dst ), IPL_DEPTH_8U, 1); //要求单通道图像才能直方图均衡化
}
cvSplit(dst, imgChannel[0], imgChannel[1], imgChannel[2],0);//HSVA
CvScalar avg=cvAvg(imgChannel[2]);
cvCvtScale(imgChannel[2],imgChannel[2],1.0,threshold-avg.val[0]);
cvMerge( imgChannel[0], imgChannel[1], imgChannel[2], 0, src );
cvCvtColor(dst,dst,CV_HSV2RGB);
for (int i=0;i<dst->nChannels;i++)
{
cvReleaseImage(&imgChannel[i] );
}
}
示例12: cvCreateImage
Mat initModify::histogramEqualization(Mat & sourceImage) {
// change the Mat to IplImage, which can make whole process quicker.
IplImage * src;
src = &IplImage(sourceImage);
IplImage * imgChannel[4] = { 0, 0, 0, 0 };
IplImage * dist = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);
if (src) {
for (int i = 0; i < src->nChannels; i++) {
imgChannel[i] = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
}
// split all the channels (R, G, B, A)
cvSplit(src, imgChannel[0], imgChannel[1], imgChannel[2], imgChannel[3]);
for (int i = 0; i < dist->nChannels; i++) {
cvEqualizeHist(imgChannel[i], imgChannel[i]);
}
// merge all the channels
cvMerge(imgChannel[0], imgChannel[1], imgChannel[2], imgChannel[3], dist);
Mat resultImage = cvarrToMat(dist, true);
cvReleaseImage(&dist);
return resultImage;
}
else {
return Mat();
}
}
示例13: show_points
void show_points( IplImage* gray, CvPoint2D32f* u, int u_cnt, CvPoint2D32f* v, int v_cnt,
CvSize etalon_size, int was_found )
{
CvSize size;
int i;
cvGetImageRawData( gray, 0, 0, &size );
IplImage* rgb = cvCreateImage( size, 8, 3 );
cvMerge( gray, gray, gray, 0, rgb );
if( v )
{
for( i = 0; i < v_cnt; i++ )
{
cvCircle( rgb, cvPoint(cvRound(v[i].x), cvRound(v[i].y)), 3, CV_RGB(255,0,0), CV_FILLED);
}
}
if( u )
{
for( i = 0; i < u_cnt; i++ )
{
cvCircle( rgb, cvPoint(cvRound(u[i].x), cvRound(u[i].y)), 3, CV_RGB(0,255,0), CV_FILLED);
}
}
cvDrawChessboardCorners( rgb, etalon_size, v, v_cnt, was_found );
cvvNamedWindow( "test", 0 );
cvvShowImage( "test", rgb );
cvvWaitKey(0);
}
示例14: cvCreateImage
IplImage* Panoramic::GetHsvFeature(IplImage* src,int H,int S,int V,int Scale ,int Scale_1 ,int Scale_2)
{
IplImage *colorImg = cvCreateImage(cvGetSize(src),8,3);
IplImage *hsvImg = cvCreateImage(cvGetSize(src),8,3);
cvCopy(src,colorImg);
IplImage *Plane_1 = cvCreateImage( cvGetSize(colorImg), 8, 1);//H plane
IplImage *Plane_2 = cvCreateImage( cvGetSize(colorImg), 8, 1);//S plane
IplImage *Plane_3 = cvCreateImage( cvGetSize(colorImg), 8, 1);//V plane
IplImage *dst = cvCreateImage( cvGetSize(src),8,1);
cvCvtColor(colorImg,hsvImg,CV_BGR2HSV);
cvCvtPixToPlane( hsvImg, Plane_1, Plane_2, Plane_3, 0 );
cvEqualizeHist(Plane_2,Plane_2);//s_plane
cvEqualizeHist(Plane_3,Plane_3);//v_plane
cvMerge(Plane_1,Plane_2,Plane_3,0,hsvImg);
cvInRangeS(hsvImg, cvScalar(H,S, V), cvScalar(5*Scale+H,5*Scale_1+S,5*Scale_2+V), dst);//cvScalar(0,40, 40), cvScalar(60, 170, 255)
cvErode(dst,dst,0,2);
/*cvNamedWindow("HSV_ROI",0);
cvShowImage ("HSV_ROI",dst);*/
cvReleaseImage(&colorImg);
cvReleaseImage(&hsvImg);
cvReleaseImage(&Plane_1);
cvReleaseImage(&Plane_2);
cvReleaseImage(&Plane_3);
return dst;
}
示例15: imageturn
void imageturn(Mat imagein,Mat &imageout)//将rgb转化hsv,然后改变hsv图像。
{
IplImage imgtemp=imagein;
IplImage* src =cvCloneImage(&imgtemp);
IplImage* floathsv = NULL;
IplImage* floatimgH = NULL;
IplImage* floatimgS = NULL;
IplImage* floatimgV = NULL;
IplImage* floatimgZ = NULL;
CvSize size = cvGetSize( src );
IplImage* imgout=cvCreateImage( size, 8, 3 );
floathsv = cvCreateImage( size, 8, 3 );
floatimgH = cvCreateImage( size, 8, 1 );
floatimgS = cvCreateImage( size,8, 1 );
floatimgV = cvCreateImage( size, 8, 1 );
floatimgZ = cvCreateImage( size, 8, 1 );
cvCvtColor(src,floathsv,CV_BGR2HSV);
cvSplit( floathsv, floatimgH, floatimgS, floatimgV, NULL);
Mat V(floatimgV,true);
Mat Vout;
sharpen(V,Vout);
imgtemp=Vout;
floatimgV=cvCloneImage(&imgtemp);
cvSmooth(floatimgV, floatimgZ, CV_MEDIAN);//中值滤波
cvEqualizeHist( floatimgZ, floatimgV ); //直方图均衡化
cvMerge( floatimgH, floatimgS, floatimgV,0,imgout);
Mat M(imgout,true);
imageout=M;
}