Just did. I thought I could quickly get a response here and (if not) then suggest it because it is really important when you save back into Camera Roll (mostly the "date taken" field which is used to sort photos by date on SkyDrive and others).
Though Nokia claims to have a very HD resolution and the best camera at night. I think Nokia Imaging SDK still lacks of the source of information for the output photos particular in automatic background text description or audio output. It will be great if the SDK can provide the code for "Background Text Description and Story Speaking" Function in case the code can link up with the Wiki that can give the information about the background of the picture location immediately. such as its history, relevant story or basic geographic details and etc.
It will be great if people can know the exact location immediately by just clicking a botton or touching the screen whenever he see a picture on the screen of the smartphonests.
If more source code are available for developer, implementation of new apps will be much creative.
By the way, we hope the Nokia can also provide the direct printing function by using Wlan or Wifi communication.
I do think that printing function would be a nice addition. As far as I now currently there are some samples on how to print to Zebra printers (Used on Point of Sales systems) using BT. Dont think there is anything done using a normal printer.
Joined DVLUP yet? This is my DVLUP referral link
The SDK is great, but it would be even greater if it was possible to blit images in an easy way (like WriteableBitmapEx does) and write text in any given font to the canvas. If this is already possible, I would really appreciate a pointer to a sample.
It could be interesting to give your filter formula. I thinks a lot of them could be implement in DirectX shader and could be used to make real time preview.
It could interesting to harmonize filters parameters :
* parameters type : CreateSolarizeFilter use float, lomo use double and CreateTemperatureAndTintFilter use int.
* value range : CreateSolarizeFilter use a rang of [0.0, 1.0], CreateTemperatureAndTintFilter use range [-100,100], ...
Maybe use double/float withe a range of [0., 1.0].
If parameters is a pixel value, use a byte and a range of [0,255].
Filter Effects sample generate concurrent access on _previewBitmap pixels when user modify filter parameters :
* Image control which display it.
* EditingSession which process rendering in parallel. (when user move a slider a lot of rendering are processed in parallel with same output buffer).
You could remove this concurrent access with RenderToImageAsync method. But you have another problem. When user move a slider, a lot of rendering are processed in parallel. Unfortunately, you don't know which session will finished in last. And displayed image is not always the last created session. Displayed preview is desynchronized with GUI param control.
I've corrected the code with a method explained in my article Using Nokia Imaging SDK in an interactive way. You can file code here
Last edited by yan_; 2013-08-04 at 14:51.
Hi everyone. Thanks for the great SDK, I really love all the dev stuff you guys do to improve the Windows Phone platform and make our lives simpler.
A few things that I'm missing:
- Please make it simple for us to extend the filters with our custom filters which work with pixels (raw pixel int arrays). That way we can push our own filters to the EditingSession and Nokia Imaging SDK can become a main and only engine for our photo apps. (Sorry if that's already possible. I have tried doing this but didn't succeed - I thought of simply implementing the IFilter interface, but couldn't get it to work)
- Would be great to go beyond just filters. We can make really great pictures with Lumia cameras, but libraries that support image analysis and raw pixel manipulation to achieve scenarios such as template matching are definitely missing on Windows Phone platform.
I suggest the following capabilities
- face detection - I guess I don't have to elaborate on this one very much Imagine all the scenarios we could build in our apps!
- stitching photos (there are great samples using Accord.NET and Aforge.NET libs which use feature detection and feature matching algorithms to get the homography matrix and to make it simple to see how the two photos align). This is a perfect thing for aligning our pictures to create scenarios such as HDR photography, which is really difficult to build nowadays because the photo capturing process with Windows Phone is too slow, the hand shakes a bit in between and then the photos do not align. Again - imagine the other scenarios - it would be awesome to have this!
That's it for now. Keep up the good work!
Crop filter raise "invalid argument" if i use a very high cropArea. This appear when i use GigaPixel picture and i want crop on a big part of the picture. For example, i can't select all picture area to make a thumb picture. Small area works perfectly.
No problem with 41Mp pictures.
FreeRotationFilter should have another mode which increase Image dimension instate of FitInside method which scale content. If i don't increase image dimension, when i use FreeRotationFilter with RotationResizeMode.Ignore picture part outside of the original area are lost.
Actually, i must increase image dimension with a crop and use FreeRotationFilter with RotationResizeMode.Ignore. FitInside is not a good solution because is scale the content.
Another solution should be a crop filter with a rotation parameter.
I need it to control correctly ROI extraction.Code:public static IFilter CreateCropFilter(Rect cropArea, double rotationAngle)
Few in here were requesting some image recognition algorithms to the SDK. At first I looked into porting OpenCV to the Windows Phone 8(it has some features implemented for WinRT), but it would have been really too much work. I might look into it again after CMake has some initial support for Windows Phone 8. Instead I used a library, where I have a small subset of the functions included in OpenCV in C#. You can do simple face detection with it in Windows Phone, but for recognizing persons etc. it's not enough. You can take a look at my article at http://developer.nokia.com/Community..._Windows_Phone
I would like to see something similar such as WriteableBitmapEx in the Nokia Imaging SDK. I ended up using it in my own example application, since it made the code so much more readable. The WritableBitmapEx is really a wonderful library for manipulating bitmaps. I could have implemented my own bitmap scaling algorithms, and then draw on top of the canvas, but that would have complicated the code a lot, while I wanted to keep it simple.
From a quick overview over the SDK it really seems a good SDK. However, I don't like the lack of openess of the used structures (Bitmap does not have a way of getting an internal representation of the current image). I feel that that's due to the proprietary RAJPEG technology - and I understand. So, not having at least some sort of access to the raw pixels makes the SDK a bit less useful for non-usual filters.
Even if it might be costly, until a better solutions comes, the SDK could use an intermediate, usual image format for accessing the raw pixels (e.g.: ARGB8, RGBA8) and convert back-and-forth between the 'open' access and proprietary RAJPEG implementation/format. This would allow properly extending the IFilter interface to be able to do processing on image's data.
Code:const int width = 400; const int height = 300; const int pixelLen = 4; // In ARGB8888 format, 1 pixel = 4 bytes byte arr = new byte[width*height*pixelLen]; var myBitmap = new Nokia.Graphics.Imaging.Bitmap( new Windows.Foundation.Size(width, height), ColorMode.Argb8888, //Several color modes are allowed. width * pixelLen, arr.AsBuffer()); // Part of System.Runtime.InteropServices.WindowsRuntime await session.RenderToBitmapAsync(myBitmap); // Use the Nokia Imaging SDK to render to the bitmap //arr now contains the rendered bitmap. //myBitmap also contains the rendered bitmap, but it's harder to access (read).
Feeding the SDK with an pixel array of your preferred format is also possible, using the same principle.