Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

imageWithBlocks fix. Rotate the original image to the right or it sho… #260

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

sunshineo
Copy link

…ws upside down.

It used to look like this for me.
wrong

As you can see the boxes are at the right place. It is the image that is upside down. Unless I say "threshold" is true, then it is fine.
threshold

So it seems that something was wrong with "self.image" orientation. After the change I made:
right

if (!thresholded) {
// Have to rotate the original image to the right or it shows upside down
CGImageRef imageRef = self.image.CGImage;
image = [[UIImage alloc] initWithCGImage:imageRef scale:self.image.scale orientation:UIImageOrientationRight];
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not a universal PR. It only works in your case. What if the image is rotated to a different orientation?
Also any code, which is added to the repo should be test covered.
Would you mind adding tests for you code?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is possible that this problem only occurs for me. I would appreciate if someone can tell me what did I do wrong. I passed Tesseract an image with horizontal text. Tesseract was able to recognize the text. Only problem is when I ask for imageWithBlocks, it gives back an image upside down, when the blocks are at the right location, as shown in the first image. And if I say use threshold, everything is fine. So my feeling is that the orientation of the self.threshold image is correct but self.image is wrong universally.
I will look into how to add test code.

@sunshineo
Copy link
Author

Per @ws233 comment on another pull request

The issue is that nevermind of the orientation of the device, the pixels in the image are always located in the same order. Only the imageOriantation tells how to draw the image on the screen.
imageWithBlocks doesn't consider the imageOriantation property of the image.
So you'd better fix the drawing code there.
In the case of the thresholding, the image is preprocessed for you automatically. And if I remember correctly, the preprocessing considers the imageRotation. Therefore you have a correct result after the preprocessing.

So I guess instead of blindly rotate, I need to check imageOriantation property.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants