Are there any inbuild function similar to bitrevorder in opencv?
I want to reverse the bits of grayscale images using opencv,is there any inbuilt function which can be used
I want to reverse the bits of grayscale images using opencv,is there any inbuilt function which can be used
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);
Asked: 2018-04-26 04:30:53 -0600
Seen: 223 times
Last updated: Apr 26 '18
Unresolved inclusion in OpenCV+Android tutorial
How to convert Floating point image to 32-bit single-channel?
How to translate this to Java?
android: how to put a column into Mat
OpenCV Tutorial 1 - Add OpenCV on API 8
Running the OpenCV4Android application on my PC
Using OpenCV as a stress detector
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