本文整理汇总了C++中DImage::combineRGB方法的典型用法代码示例。如果您正苦于以下问题:C++ DImage::combineRGB方法的具体用法?C++ DImage::combineRGB怎么用?C++ DImage::combineRGB使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DImage
的用法示例。
在下文中一共展示了DImage::combineRGB方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: filterImage_
//.........这里部分代码省略.........
&rgParms[tnum])){
fprintf(stderr, "DMaxFilter::filterImage_() failed to spawn "
"thread #%d. Exiting.\n",tnum);
exit(1);
}
}
#endif
maxFiltHuang_u8(imgGDst, imgG, _radiusX, _radiusY,
wKern, hKern, rgKern, numKernPxls,
rgRightEdge, pProg, hUnpad, 3 * hUnpad);
#ifndef D_NOTHREADS
for(int tnum = 1; tnum < _numThreads; ++tnum){
if(pthread_join(rgThreadID[tnum],NULL))
fprintf(stderr, "DMaxFilter::filterImage_() failed to join "
"thread %d\n", tnum);
}
for(int tnum = 1; tnum < _numThreads; ++tnum){
rgParms[tnum].pImgDst = &imgBDst;
rgParms[tnum].pImgSrc = &imgB;
if(0 != pthread_create(&rgThreadID[tnum], NULL,
DMaxFilter::DMaxFilter_Huang8threadWrap,
&rgParms[tnum])){
fprintf(stderr, "DMaxFilter::filterImage_() failed to spawn "
"thread #%d. Exiting.\n",tnum);
exit(1);
}
}
#endif
maxFiltHuang_u8(imgBDst, imgB, _radiusX, _radiusY,
wKern, hKern, rgKern, numKernPxls,
rgRightEdge, pProg, 2 * hUnpad, 3 * hUnpad+1);
#ifndef D_NOTHREADS
for(int tnum = 1; tnum < _numThreads; ++tnum){
if(pthread_join(rgThreadID[tnum],NULL))
fprintf(stderr, "DMaxFilter::filterImage_() failed to join "
"thread %d\n", tnum);
}
#endif
if(NULL != pProg){
pProg->reportStatus(3*hUnpad+1,0,3*hUnpad+1);//report complete
}
imgDst.combineRGB(imgRDst, imgGDst, imgBDst);
}
break;
case DImage::DImage_dbl_multi:
{
int w, h, wm1, hm1; // width, height of padded image
double *pDst;
double *pPad;
double *rgWindowBuff;
fprintf(stderr, "DMaxFilter::filterImage_() performing brute-force "
"(slow) max filter on double image... NOT YET IMPLEMENTED!\n");
exit(1);
// w = pImgPad->width();
// h = pImgPad->height();
// wm1=w-1;
// hm1 = h-1;
// imgDst.create(wUnpad, hUnpad, DImage::DImage_dbl_multi,
// imgSrc.numChannels(), imgSrc.getAllocMethod());
// rgWindowBuff = (double*)malloc(sizeof(double)*wKern*hKern);
// D_CHECKPTR(rgWindowBuff);
// for(int chan = 0; chan < imgSrc.numChannels(); ++chan){
// pDst = imgDst.dataPointer_dbl(chan);
// pPad = pImgPad->dataPointer_dbl(chan);
// for(int y = 0, idxDst = 0; y < hUnpad; ++y){
// int idxPad;
// idxPad = (y+_radiusY)*w+_radiusX;
// for(int x=0; x < wUnpad; ++x, ++idxDst, ++idxPad){
// int count;
// count = 0;
// for(int dy = -_radiusY; dy <= _radiusY; ++dy){
// for(int dx = -_radiusX; dx <= _radiusX; ++dx){
// rgWindowBuff[count] = pPad[idxPad+(dy*w)+dx];
// ++count;
// }
// }
// // find max
// qsort((void*)rgWindowBuff, count, sizeof(double),compareDoubles);
// pDst[idxDst] = rgWindowBuff[count / 2];
// }//end for(x...
// }//end for(y...
// }//end for(chan...
// free(rgWindowBuff);
}//end block in case DImage_dbl_multi
break;
default:
//TODO: finish implementing this
fprintf(stderr, "DMaxFilter::filterImage_() not yet implemented for "
"some image types\n");
exit(1);
break;
}
if(!fAlreadyPadded){
delete pImgPad;
pImgPad = NULL;
}
}