Closed kejriwalnishant1990 closed 9 years ago
I will check it. Can you past an example code here?
@Override
public void onStart(ConnectedNode connectedNode) {
this.node = connectedNode;
final org.apache.commons.logging.Log log = node.getLog();
imageSubscriber = node.newSubscriber("/camera/rgb/image_color", Image._TYPE);
imageSubscriber.addMessageListener(new MessageListener
try {
cvImage = CvImage.toCvCopy(message,"bgr8");
System.out.print(cvImage.encoding);
} catch (Exception e) {
log.error("cv_bridge exception: " + e.getMessage());
return;
}
if (cvImage.image.rows() > 60 && cvImage.image.cols() > 60)
Core.circle(cvImage.image, new Point(50, 50), 10, new Scalar(255,0,0));
System.out.print("Size of the image subscribed \t");
System.out.print(cvImage.image.rows());
System.out.print(cvImage.image.cols());
Imshow im = new Imshow("Subscribed image");
im.showImage(cvImage.image);
try {
im.wait(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
Log.i(TAG, "called onStart");
}
This code not finish yet :) I will check it.
Hi talregev,
I found that there is some problem with image encodings in cv_bridge. Any update on it?
Any update of image_encoding issue?
I have updated the cv_bridge library. the CvImage
should work now.
There still issues with CvCompressedImage
. It will take time to solve.
Should i download the code again or i can do small change and it will work?
git pull?
okk... i will pull the repo again.
If you like my library, please help to update the wiki. thanks!
Once this subscriber works, i will work with you to update the code and wiki.
You have set android 23 as target sdk? Is it necessary to use 23 SDK version?
Not necessary, but i like to work on the latest SDK and compiler. But the program will work on older devise also. (from Gingerbread 2.3.* (sdk 10) and above. )
i am getting this error while subscribing the image:
9271-9580/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III) 08-21 23:13:27.490 9271-9580/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: pool-1-thread-14 Process: org.ros.android.android_tutorial_cv_bridge, PID: 9271 java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III) at org.opencv.core.Mat.n_Mat(Native Method)
Did you change the target sdk?
yes i made it 15 for android_tutorial_cv_bridge.
please leave the target sdk as is.
ok let me check.
please pull from git the changes and not do it by yourself.
If i dont make any change, i get following error : Unfotunately. cv_bridge Tutorial has stopped.
In logcat, following error is displayed:
13084-13115/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
Process: org.ros.android.android_tutorial_cv_bridge, PID: 13084
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:304)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.
Try to make every sub-module to target sdk 15, and tell me what you get.
If i comment this part, then code does not exit suddenly. // try { // cvImage = CvImage.toCvCopy(message); // } catch (Exception e) { // log.error("cv_bridge exception: " + e.getMessage()); // return; // }
For which module should i made target sdk 15? cv_bridge_tutorial???
android_cv_bridge_tutorial has already targetSdk as 15.
for every sub-moudle: android_cv_bridge_tutorial already in 15.
opencv, opencv3, cv_bridge, module and the rest.
Still same error:
19717-19948/org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1MatIII)
08-21 23:40:32.422 19717-19948/org.ros.android.android_tutorial_cv_bridge E/AndroidRuntime﹕ FATAL EXCEPTION: pool-1-thread-13
Process: org.ros.android.android_tutorial_cv_bridge, PID: 19717
java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat(int, int, int) (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__III)
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.
is it working fine on your machine?
yes. is working good on my phones.
try to find this line: classpath "com.android.tools.build:gradle:1.3.1" to this line: classpath "com.android.tools.build:gradle:1.2.3"
there is 3 lines like this in the code.
are you using real phone or simulator?
real phone Nexus 4 Lollipop
I also use Lollipop, on HTC one m7
Still i am getting same error:
8-21 23:46:41.904 23832-23832/org.ros.android.android_tutorial_cv_bridge D/CameraBridge﹕ Attr count: 5
08-21 23:46:41.939 23832-23880/org.ros.android.android_tutorial_cv_bridge D/OpenGLRenderer﹕ Use EGL_SWAP_BEHAVIOR_PRESERVED: true
08-21 23:46:41.948 23832-23832/org.ros.android.android_tutorial_cv_bridge D/Atlas﹕ Validating map...
08-21 23:46:42.034 23832-23880/org.ros.android.android_tutorial_cv_bridge I/Adreno-EGL﹕
you download this? https://play.google.com/store/apps/details?id=org.opencv.engine you need opencv on your phone.
But you have provided opencv in this library. Do i need to install separately?
yes. of course. my program provide connect to the library, not the opencv itself. Maybe you can add this to the Wiki ...
should i revert the changes?
mmm yes, and if it not work then change again. slowly.
Ok now code is running, but when i am trying to see image on pc from this command: $ rosrun image_view image_view image:=/image/pub I am getting following error: Unable to convert 'rgb8' image to bgr8: 'Image is wrongly formed: step < width * byte_depth * num_channels or 640 != 640 * 1 * 3'
/image/pub is rostopic for publisher
you have rviz?
yes
check on rviz.
did you change the code, or is the original?
I have checked on changed code.... Should i try with original code?
yes. but this message will not gone. It other problem.
Does this message comes on your machine also?
I check on rviz, not with image_view
In rviz, the image is coming out correctly. Now i am checking everything with original code.
thanks.
It works with original code too.. thanks a lot. Currently frame speed is slow, i think compress image will work on higher frame per second.
I am trying to run your tutorial on android_cv_bridge but it is throwing following error. I am subscribing the image topic(/camera/rgb/image_color) from kinect in android phone. I ahve made my laptop as master and android phone as client.
org.ros.android.android_tutorial_cv_bridge E/roid_tutorial_cv_bridge﹕ cv_bridge exception: Unrecognized image encoding [bgr8] org.ros.android.android_tutorial_cv_bridge E/art﹕ No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J) org.ros.android.android_tutorial_cv_bridge E/System﹕ Uncaught exception thrown by finalizer org.ros.android.android_tutorial_cv_bridge E/System﹕ java.lang.UnsatisfiedLinkError: No implementation found for void org.opencv.core.Mat.n_delete(long) (tried Java_org_opencv_core_Mat_n_1delete and Java_org_opencv_core_Mat_n_1delete__J) at org.opencv.core.Mat.n_delete(Native Method) at org.opencv.core.Mat.finalize(Mat.java:2475) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:191) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:174) at java.lang.Thread.run(Thread.java:818)