Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

it isn't straightforward, but you could use a lookup table, generated like this:

for (unsigned n = 0; n<256; n++) {
    unsigned n2=0;
    for (int i=0; i<8; i++) {
        unsigned b = ((n >>(i)&1)>0);  
        n2 |= b<<(7-i);
    }
    cout << int((char)(n2))<< ",";
    if (n%16==15) cout << endl;
}

and use that later, in your java code:

byte [] rev = { // jikes, java's bytes are *signed*
    0,-128,64,-64,32,-96,96,-32,16,-112,80,-48,48,-80,112,-16,
    8,-120,72,-56,40,-88,104,-24,24,-104,88,-40,56,-72,120,-8,
    4,-124,68,-60,36,-92,100,-28,20,-108,84,-44,52,-76,116,-12,
    12,-116,76,-52,44,-84,108,-20,28,-100,92,-36,60,-68,124,-4,
    2,-126,66,-62,34,-94,98,-30,18,-110,82,-46,50,-78,114,-14,
    10,-118,74,-54,42,-86,106,-22,26,-102,90,-38,58,-70,122,-6,
    6,-122,70,-58,38,-90,102,-26,22,-106,86,-42,54,-74,118,-10,
    14,-114,78,-50,46,-82,110,-18,30,-98,94,-34,62,-66,126,-2,
    1,-127,65,-63,33,-95,97,-31,17,-111,81,-47,49,-79,113,-15,
    9,-119,73,-55,41,-87,105,-23,25,-103,89,-39,57,-71,121,-7,
    5,-123,69,-59,37,-91,101,-27,21,-107,85,-43,53,-75,117,-11,
    13,-115,77,-51,45,-83,109,-19,29,-99,93,-35,61,-67,125,-3,
    3,-125,67,-61,35,-93,99,-29,19,-109,83,-45,51,-77,115,-13,
    11,-117,75,-53,43,-85,107,-21,27,-101,91,-37,59,-69,123,-5,
    7,-121,71,-57,39,-89,103,-25,23,-105,87,-41,55,-73,119,-9,
    15,-113,79,-49,47,-81,111,-17,31,-97,95,-33,63,-65,127,-1
};

Mat lut = new Mat(1,256, CvType.CV_8U);
lut.put(0,0,rev);

Mat dst = new Mat();
Core.LUT(src, lut, dst);