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);
no, there isn't. what exactly would you need it for ?
do you really want to reverse the order of bits, or their value ?
i wish to reverse the bits of all the pixels of the image.for eg if the pixel value is 14 then then its binary would be 00001110 ,the reverse of this would be 01110000 .So for every pixel this function should be performed .
so again, opencv does not have it.
what would be the context of that operation ? what would it be useful for ? (noone else needed this before)
i am trying to encrypt an image and it is the part of an algorithm that i am using.
hmmm, opencv might not be the best library, and java not the best language for this.
you'll have to roll your own algorithm here, sorry.
ok will look into it thank you.
oh, wait, you could build a lookup table and use LUT