See the question and my original answer on StackOverflow

Direct2D histogram effect doesn't output any image, it builds an array of floats that you can get back from the effect's D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT property

d2dContext->CreateEffect(CLSID_D2D1Histogram, &histogramEffect);
histogramEffect->SetInputEffect(0, ... SomeInput ... );
d2dContext->BeginDraw();
d2dContext->DrawImage(histogramEffect.Get());
d2dContext->EndDraw();

// The histogram data is only available once the effect has been 'drawn'.
int histogramBinCount;
histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_NUM_BINS, &histogramBinCount);

auto histogramData = new float[histogramBinCount];
histogramEffect->GetValue(D2D1_HISTOGRAM_PROP_HISTOGRAM_OUTPUT, 
                           reinterpret_cast<BYTE*>(histogramData), 
                           histogramBinCount * sizeof(float));