Something More for Research

Explorer of Research in Information Technology

  • Blog Stats

    • 29,914 hits
  • Subscribe

  • Enter your email address to follow this blog and receive notifications of new posts by email.

    Join 2,946 other followers

  • Calendar

    July 2014
    M T W T F S S
    « Jun    
     123456
    78910111213
    14151617181920
    21222324252627
    28293031  
  • Goodreads

  • Spam Blocked

  • Pages

  • Blogs I Follow

  • Categories

TOOLS TO DEVELOP THE NEXT KILLER IOS OR ANDROID APP

Posted by Hemprasad Badgujar on July 22, 2014

POST NAVIGATION

  1. Random + Noteworthy Tools
  2. DIY (No Coding) App Creation Tools
  3. Development, Analytics and Management Platforms
  4. Mockup and UI Design Tools
  5. Mobile Ads + Monetization
  6. Test, Refine and Get Feedback
  7. App Promotion & Marketing
  8. Enhance App Functionality
  9. Other and Miscellaneous

RANDOM + NOTEWORTHY TOOLS

  1. Tapjoy – Drive more installs and boost your revenue.
  2. Vungle – Video trailers for your app.
  3. Skala Preview – Sends lossless, color-accurate previews to any iOS device.
  4. Apptopia – Buy and sell app ownership.
  5. appbackr – Get your apps funded or profit from funding apps.
  6. Ooomf – Create a beautiful landing page for your iPhone app in minutes.
  7. App Annie – App store analytics and market intelligence.
  8. Mopapp – App store analytics.
  9. Pieceable – Make your iOS apps work in the browser.
  10. Chupa – The marketplace for buying/selling mobile app components.
  11. Distimo – Providing valuable insight into the app store marketplace.
  12. Appsfunder – Fund your development. Build up customers. Keep ownership.
  13. PlayHaven – Mobile game LTV maximization platform and cross-promotion.
  14. Appstores.com – White label app store and distribution platform.
  15. Cloudmine – Stop writing backends for your mobile apps.

 

DIY (NO CODING) APP CREATION TOOLS

  1. Cabana – The visual way to make gorgeous custom mobile apps. *RG
  2. Mobile Roadie – Full CMS, no coding app builder for iOS and Android.
  3. Appafolio – 100% native apps, content caching for offline viewing and more.
  4. AppMakr – Point and click solution for building rich content based apps.
  5. RareWire – DIY app creation studio. Coming soon.
  6. GameSalad Creator – Create, test and publish your own game. Drag and drop.
  7. Bizness Apps – Mobile apps for businesses made easy.
  8. WebMobi – Create a mobile web app in minutes. Many features.
  9. SwebApps – An easy way to build your app in minutes.
  10. TapLynx – Create an app from your website in minutes.
  11. AppBreeder – “The online iPhone app builder.”
  12. App Press – Build iOS apps without coding.
  13. Dapp – The app design app. WYSIWYG editor with 100% money back guarantee.

DEVELOPMENT, MANAGEMENT & ANALYTICS PLATFORMS

  1. Parse – Add a powerful and scalable backend to your app in minutes.
  2. Appboy – User engagement, CRM, analytics and more.
  3. Flurry – Analytics, traffic acquisition and monetization.
  4. Mixpanel – Mobile analytics. Actions speak louder than page views.
  5. Scoreloop – Cross-platform mobile gaming SDK. Virtual currency and more.
  6. PhoneGap – Open source HTML5 framework that supports 7 platforms.
  7. Kontagent – User analytics for the mobile web.
  8. Appcelerator – Mobile app platform for building on Android, iOS and mobile web.
  9. Kendo UI Mobile – Build HTML5 apps that look native on any device.
  10. Appoxee – Making mobile app engagement easy, effective and trackable.
  11. Localytics – Powerful tools and actionable insights.
  12. Precog – Harness the power of big data to build smarter apps.
  13. Apsalar – Allows mobile publishers to analyze, optimize and monetize.
  14. Sencha – HTML5 framework for mobile devies.
  15. Flow – Build real-time apps faster, better, smarter.
  16. Game Closure – Offer a JavaScript game SDK. Runs on mobile/tablet devices.
  17. StackMob – Robust and flexible end-to-end HTML5 platform.
  18. Claritics – Intelligent analytics for mobile app developers.
  19. Tiggzi – Cloud-based mobile app builder.
  20. Capptain – Combines analytics and CRM features.
  21. Placed – The Placed SDK enables location analytics for your app.
  22. GENWI – Cloud publishing for mobile.

 

MOCKUP AND UI DESIGN TOOLS

  1. App Cooker – Advanced iOS mockup generator for mobile applications.
  2. Proto.io – Silly-fast mobile prototyping.
  3. Mockabilly – App for creating mockups on iPhone.
  4. UI Stencils – Stencils, sketch pads and accessories for UI design.
  5. Interface – Mockup and prototyping app for iPhone/iPad.
  6. justinmind – Rich interactive wireframes to define mobile apps.
  7. UXPin – User experience design tools for professionals.
  8. Symbolicons – Simple, precise and awesome vector icons.
  9. Prototypes – Turn your stackable designs into a tappable iPhone prototype.
  10. Blueprint – An iPad app for mocking up iPad/iPhone applications.
  11. Mobility – A free set of mobile UI design elements.
  12. Android GUI Set – Free Android GUI set including Photoshop files.

 

MOBILE ADS + MONETIZATION

  1. iAd – A significant revenue stream for iOS developers.
  2. Millenial Media – Monetization solutions for mobile app developers.
  3. inneractive – Mobile advertising and marketing.
  4. Burstly – Empowers developers and enables them to make more money.
  5. Airpush – Push ad network. Android app monetization.
  6. Medialets – Mobile rich media advertising.
  7. xAd – Local mobile ads.
  8. madvertise – European mobile advertising marketplace.
  9. Pontiflex – Mobile performance advertising.
  10. WHERE Ads – Deliver relevant local ads to your audience.
  11. Jumptap – Targeted mobile advertising.
  12. Tapgage – Mobile interstitial ads (also has a “click exchange” for driving traffic).

 

TEST, REFINE AND GET FEEDBACK

  1. Apptentive – Easy in-app feedback for iPhone application developers. *RG
  2. Apphance – Instant, accurate and complete mobile testing.
  3. Crashlytics – Powerful yet lightweight crash reporting for iOS and Android.
  4. StartUpLift – Submit your startup. Get featured. Get feedback.
  5. Crittercism – Gives you real-time, actionable crash reports for mobile apps.
  6. BetaBait – Find beta users and testers.
  7. BugSense – Crash reports for Android, WP and iOS apps.
  8. FieldTest – Currently in private beta.
  9. iPad GUI PSD – A free vector iPad GUI set.
  10. uTest – End-to-end software testing.
  11. Truevoo – Submit iPhone apps for users to review.

 

APP PROMOTION & MARKETING

  1. apptap – App search, recommendations and marketing.
  2. AppCod.es – iOS app store SEO and marketing.
  3. Appency – Professional mobile application marketing.
  4. App.net – Market your mobile apps with beauty, strength and intelligence.
  5. Chartboost – Succeed in the app store through cross-promotion.
  6. Appular – iPhone application marketing and public relations.
  7. Appia – An open app marketplace with over 32k developers.
  8. App Store Optimization – SEO for mobile apps.
  9. AppCircus – The global open app showcase platform.
  10. buzzdoes – App marketing and distribution tool.

 

ENHANCE APP FUNCTIONALITY

  1. PubNub – Blazingly fast cloud-hosted messaging service for real-time apps.
  2. Xtify – Push notifications for iOS, Android and Blackberry devices.
  3. Lookio – Live in-app support for mobile applications.
  4. CENZIC – Solutions for mobile application security.
  5. SecureUDID – A UDUD solution that’s secure and respects privacy.
  6. Verious – A mobile app component marketplace.
  7. ZooZ – Start accepting secure in-app payments within minutes.
  8. Applingua – iOS app localization (translation) service.
  9. Trestle – Powerful cloud services for your mobile apps.

 

OTHER AND MISCELLANEOUS

  1. Interstate – Plan and share development progress using roadmaps.
  2. Mobile Orchard – The iPhone app developer’s blog.
  3. Appolocious – Discover iPhone and iPad apps. A Yahoo directory.
  4. Orientation to Android Training – Official Android classes.
  5. StackOverflow – Question and answer site for programmers.
  6. Tap2Print – Monetize your photo/image app.
  7. StartApp – Get paid for your Android app downloads.
  8. AppLover – Helping build amazing applications.
  9. BlueStacks – Run Android apps on Windows.

 

Posted in Mixed | Tagged: , , , , , , , , | Leave a Comment »

What’s New In Microsoft PowerPoint 2013 ?

Posted by Hemprasad Badgujar on July 9, 2014

Revamped Landing Page

The landing page of PowerPoint 2013 has received the much needed facelift. The landing page of the previous version, Microsoft Office 2010, looked very bland and even confusing to some users. In the newer version, the landing page has been revamped to provide users with quick access to locally available templates, as well as the online database. The online templates are divided into several categories such as Business, Industry, Small Business, Presentation, Orientation, Design Sets, 4:3, Media, Nature, Marketing etc. While new presentations can be created from the main window, the left sidebar shows all the recently accessed presentations.

 

Color Themes For Templates

The templates can be used with different color themes. For instance, if the theme comes with a light color scheme, and you want to use darker colors, just click the template and all the available color schemes will be displayed. You can select the required one to use in your presentation. Just like the previous versions, you can also manually change the color and style of elements in a template.

 

Enhanced Presenter View

The Presenter View in PowerPoint 2013 displays the Active slide on the left side, the Next slide at the top right, while the Notes for the current slide are displayed in the bottom right corner. A timer appears above the preview of the current slide, and extra controls are available at the top and bottom of the Presenter View window.

Even though, Presenter View was also available in the previous versions of Microsoft PowerPoint, it was not activated by default. Users had to navigate to the Slide Show tab, and enable Presenter View in order to display it on secondary display screen. For this reason, a lot of people were not aware of its existence in the previous PowerPoint versions. Microsoft seemed to realize this in the latest release, and has enabled it by default. Now, whenever you run the slide show, the Presenter View will be displayed, if there are multiple display devices connected to the computer. Some changes have also been made to the console. Now you have an extra Laser Pointer Pen Tool, option to zoom parts of a slide, see all slides at a time, and ability to switch Slide show and Presenter Views between the connected display monitors.

 

Account Management

The Account Management window allows you to connect to your SkyDrive account, and add services to use with PowerPoint. Sign in to your Microsoft Account, and it will automatically connect to your SkyDrive account. You can use the same account to sign in to Microsoft Office 2013 on different devices. This way, all your saved documents will be synced to the cloud and will be available for viewing and editing from any device. This eliminates the need to carry your documents in removable storage drives. Using the SkyDrive account, you can easily share your presentations and invite others to collaborate on required presentation projects.

 

Share Documents To View & Edit In The Browser

The Share option offers a number of ways to share the document with others. You can Invite people by specifying their Email addresses, Send them a link to View and Edit the document, Post the document to Social networks, Email it to others as an attachment (PPTX), as a URL, as PDF, as XPS, or as internet Fax,Present it Online so that others can check out your presentation from their browsers, and Publish Slides to any Library or a SharePoint site. The person on the receiving end does not need to have Microsoft Office installed on his/her system in order to view or edit the document. If they have a Windows Live ID, everything can be performed from inside the browser.

 

 

Widescreen & Fullscreen Support

PowerPoint 2013 offers a slew of Widescreen templates and themes. The previous version also allowed you to switch to widescreen mode, however, you had to manually change the aspect ratio of the slide, which also changed the size of the slide elements. The new version of PowerPoint has built in support for Widescreen monitors. Moreover, there is also a new full screen mode available for editing. It allows you to view your slides, and edit them while consuming the available screen space. The Ribbon, containing all the editing options, can be activated and deactivated from a conveniently placed button at the top right corner.

 

UI Changes & Pane View

There are various UI related changes in PowerPoint 2013. First of all, everything feels smoother, from the movement of the cursor when you type, to the way animations appear in your presentation. Microsoft has also tried to improve the look and feel of the interface. There are now buttons available on the main interface to switch to the aforementioned Fullscreen View, and to access Notes and Comments.

Another welcome change to the UI is that a lot of options, which used to appear in separate dialog boxes, are now accessible through panes, appearing on the right side. For instance, in PowerPoint 2010, if you right-click a slide and select Format Background, a separate dialog box opens up. You can make changes to a slide, but the dialog box covers the slide, and you have to move it manually in order to view all the slide elements. Moreover, when you select Format Background option, instead of opening a separate dialog box, a pane is added to the right side. Anything that you change using from the pane is reflected on the slide in real time. It means that you don’t have to open and close the dialog box again and again to view the changes. Just like other Office 2013 suite applications, it includes an Online pictures option to let you quickly add background to the slide from your favorite online image resource; you can choose an image from the Office.com Clip Art Library, the Bing Image Search, or from your own SkyDrive and Flickr account.

 

Alignment Guides, Merge Shapes & Auto-Text Wrapping

A new feature, included in PowerPoint 2013, as well as Word 2013, is the Alignment Guides. It allows you to easily align objects and text in a slide, relative to each other. You can use the object alignment option to merge different shapes with each other. For instance, If you want to merge together two shapes, the alignment guides help you in quickly adjusting them together according to top, down, left and right margins. Another very useful, and much needed, feature added to PowerPoint 2013 is auto-text wrapping. When an image is added to a slide with text in it, the text automatically readjusts itself around the image so that there is no overlapping of any kind.

 

Insert Online Video, Image And Audio

PowerPoint 2013 now allows you to add videos, images and audio files directly from the internet, without first downloading them to your PC. Think of it as the object being embedded in your presentation. The previous version of PowerPoint also had the option to add videos from the web, however you had to copy the embed code of required video and paste it into PowerPoint. The latest version allows you to Insert an online video in your presentation using the integrated Bing Video Search, SkyDrive Account, YouTube, or From a Video Embed Code. For instance, to add a YouTube video, just search for it, select the required one from the search results and click OK to embed it into your presentation.

 

The image results are, by default, set to show the images that are licensed under Create Commons, so it eliminates the chance of copyright violation when you use an online image in your presentation. You can also choose to view all the web results for your search.

 

Export Presentation As WMV & MPEG-4 Video

PowerPoint 2010 also lets you save the presentation as a video, but only in WMV format. In PowerPoint 2013, another format, MPEG-4 is added to save converted presentation in video format. Due to the addition of MPEG-4 format, the presentation video can directly played on a lot of media players and devices. Now, users don’t require Windows Media CODEC installed on non-Windows devices to watch the presentation. Also, portable devices, as well as a lot of LCD/ LED TVs have built in support to play MPEG-4 format. Just go to Export, and select Create a Video. All the other options, including the Resolution, and whether to use recorded timings and narrations are available with the MPEG-4 format.

 

Start at the new Start screen

As with the other key Office 2013 applications, PowerPoint 2013 shares the new Modern-style interface and a revamped Start screen. Instead of the blank presentation you started with in PowerPoint 2010, this screen is packed with options including a range of templates. Also on the Start screen is a link to your current online SharePoint or SkyDrive account, a list of recently accessed PowerPoint files, and an Open Other Presentations link which you use to access files on disk or stored in the cloud.

You can also search online for templates and themes from the Start screen; a list of suggested searches helps here.

Now you can preview layouts before selecting a Theme to use.

Themes are sleeker, and Variants more varied

PowerPoint Themes are predesigned slide designs that spare you from doing the design work yourself. In PowerPoint 2010 there was a plethora of Themes, Color Schemes, Font Schemes and Effects to choose from. PowerPoint 2013 simplifies everything. The new Themes default to a 16:9 aspect ratio and each has a small subset of Variants, which provide variations in color and some design elements for that Theme.

You’ll find Themes from both the Start screen and the new Design tab. On the Start screen you can click a Theme, preview its variant,s and scroll through previews of the Theme Title, Title and Content, Smart Chart and Photo layouts before committing to one to use.

The old Merge Shape tools are now easier to find.

Shape tools get improvements

Although some of the Merge Shapes features that are touted as being new in PowerPoint 2013 were in PowerPoint 2010, they weren’t accessible from the Ribbon toolbar. In PowerPoint 2013, though, the Join, Combine, Fragment, Intersect and Subtract tools are accessible by selecting the Drawing ToolsFormat tab and clicking the Merge Shapesbutton. You’ll use these to create your own custom shapes by combining and merging simple shapes to make more complex ones. These tools have a handy live preview as well.

In addition, new alignment guides show when shapes are lined up to each other, to slide elements, and to borders and they make it easier to line up and space objects evenly on your slides.

Formatting options have become more visible.

Find new formatting tools

In PowerPoint 2013, you’ll find many formatting features from task docked to the right of the screen as you work. In earlier versions of PowerPoint, these options appeared in dialogs over the slide, which you had to move or close to continue working.

To access these new task panes, right-click a shape, for example, and choose Format Shape to see the available options for a shape in the task pane. Click a picture and the task pane changes to show picture formatting options. While most of the formatting options are not new, this makes them easier to find.

New is the Eyedropper tool, available when you are making a color choice. Use this to match colors by sampling a color to use from a shape or photo.

Lok online for videos to include in presentations from within PowerPoint.

Video input and output improve

PowerPoint 2013 supports additional video formats so it’s more likely videos will play in your presentation without you needing to install additional codecs.  For example, PowerPoint 2013 supports the MP4 and MOV formats for playing video, and you can export a PowerPoint presentation to video in MP4 or WMV formats.

The new Video button on the Insert tab includes options that let you search for a video from an online source and drop it into your deck without first downloading it to your computer.

At long last, there’s a button to play audio tracks in the background and across slides.

Audio playback options expand

PowerPoint 2013 supports a wide range of audio formats without requiring you to download and install additional codecs. Supported formats now include AIFF, AU, MID, MIDI, MP3, M4A, MP4, WAV, and WMA.

You can click a button in PowerPoint 2013 to play audio tracks across the entire slideshow or across slides. While this has always been possible, it was ridiculously annoying to set up.  Now all you need do is to insert the audio file, select it, and chooseAudio Tools, Playback tab and click the Play In Backgroundoption.

Only have one monitor? You can finally take advantage of Presentation View.

Presentation View becomes rosier

While the PowerPoint Presenter View was available in earlier versions of PowerPoint most users didn’t know it existed. Plus, if your computer only had one monitor you couldn’t access it —even to rehearse your presentation!

Now you can access Presenter View even on a single monitor by pressing Alt + F5. In Presenter View you can swap monitors for Presenter View and Slide Show View if desired. You can also view a thumbnail view of your slides, and click to view a slide out of sequence.

The new Zoom option lets you look close-up into an area on a slide to draw attention to it. There’s a new laser pointer tool here, too.

The new Comments task pane makes it easier to converse when working with others.

Work better with your team

When you’re designing a presentation with others, the new Comments feature will make it easier to discuss your slideshow with collaborators. When you add a comment, it appears in a Comments task pane down the right of the screen and stays visible while you work.

There are also options to add a comment from the Insert tab or the Comments task pane. The Comments task pane lets you navigate through comments, and see if there are comments on other slides. You can view your presentation with or without comments by selecting the Show Comments from the Review tab, and deselecting Show Comments.

The new Office Presentation Service expands features for Presentation View and video in online presentations.

Bring your presentation online

Now you can present a deck stored in the cloud or on your PC to the Web in real time. To use the new Office Presentation Service, choose File, Share, Present Online. You can also allow attendees to download the presentation to their own PC.

You’ll also see Presenter View while making your presentation. Plus, you can play video at presentation time, and viewers get their own set of video controls. In addition, viewers can navigate back to previous slides if they need to check or follow up on something.

 

Switching accounts / SkyDrive integration

I’ll admit, I really wasn’t crazy about the idea of “logging in” to Office initially. I also admit that this isn’t the most exciting or even impressive feature, but it is one that I am thankful for. As someone with several Microsoft Accounts, a couple Office 365 accounts, and therefore many SkyDrive accounts, it was a bit inconvenient having to go to the web, sign in to a SkyDrive account, and then download whatever file I needed. I really love being able to quickly switch between profiles to quickly access files in the cloud right from PowerPoint.

Having two Microsoft Accounts gives me a nice little “fence” to separate my personal and work files. All I have to do is click on “Switch account” to access my other accounts.

If I didn’t want to separate files via multiple Microsoft Accounts, I can also just add two different SkyDrive accounts to one profile. In other words, I sign into PowerPoint with one Microsoft account, but add all my SkyDrive accounts by clicking on “Add a Place” from the backstage open screen.

The only thing I don’t like about this second method is that at first glance there is no way to distinguish between my two different SkyDrive folders. As you can see in the above picture, PowerPoint only displays the user name (which is the same) next to each account. On the Open screen, I would love to see the email address display below the name like in the Accounts screen. Other than that, this is a wonderful addition, one that makes me utilize my free cloud storage more than ever before, and limits my need to “remote desktop” into my work computer.

Threaded comments

When collaborating with others, it is now a lot less complicated to follow conversations. Comments are now “threaded” and a lot easier on the eye.

Play From and Motion Path End

Technically, these are two separate but similar features that tie for third place in my book. I work with a lot of animations, and these two new additions have saved me a ton of time when working with and creating them.

Play From

The old Play button in the Animation Pane is now a Play From button, allowing you to preview a portion of the animations on a PowerPoint slide. Simply select an animation in the animation pane before pressing the Play From button.

Motion Path End

When drawing motion paths, PowerPoint now “ghosts” your object so you can see exactly where that object will appear when the animation completes, so no more guessing!

Color Picker

PowerPoint now includes a color picker! Better late than never, right?

The Eyedropper tool is found in the Shape Fill drop menu located from both the Home tab and the Drawing Tools Format tab. To select a color on the slide, simply click on the Eyedropper button, and then click on the desired color. To select a color from outside of the PowerPoint application window, click and drag.

Presenter View

The presenter view received quite the overhaul. It now is much darker, so presenting from behind a computer screen will not create a creepy glow.

It also includes three resizable panes: a slide preview, a next slide preview, and a notes area. To resize any of these areas, simply hover your mouse over any of the divider bars, then just click and drag.

Personally, I don’t need to see my current slide or the next slide. So my view usually looks like this:

In the above picture, I’ve completely collapsed the current slide view, resized the next slide view to a teeny-tiny thumbnail, and maximized my notes area to act as a kind of teleprompter.

There are also a lot of tools at your disposal that were once buried in hard-to-reach menus. All buttons are touch-friendly sized, making it easier to navigate a presentation from a touch-enabled monitor or tablet. The only problem is that these buttons appear in the Current Slide pane, so if you are like me and minimize that area, they are no longer easily accessible; however, you can still get to those options by right-clicking.

Also very useful, you can now jump to any slide or section in your presentation by clicking the Slide Sorter button (the one next to the pen tool) or by right-clicking and selecting “See All Slides.

Your view will change, but your audience will still see your previously selected slide. As you select a different slide, your audience will just see a flawless transition to a new slide and will never know you are presenting out of order.

But perhaps the best addition to the presenter view is the ability to zoom into a portion of a slide.

Simply select the Zoom In button (Magnifying Glass icon), hover your mouse over the area you’d like to zoom into, and click.

Well, now that PowerPoint 2013 has released to manufacturing, it’s time to publish my big list of new features. This is my list of new stuff in PowerPoint 2013, definitely not the same list Microsoft marketing publishes. So here we go…

Start UI. PowerPoint 2013 gives you a whole new experience from the get-go. Choose from a bunch of new templates and variants and see previews of a few slide layouts before you begin your presentation.

16×9. This is the new default slide aspect ratio. (The old one was 4×3.) Don’t worry, you can still set your default template to 4×3 if you want.

13.33″ x 7.5″. This is the new default slide size. (The old 4×3 was 10″ x 7.5″, and the old 16×9 was 10″ x 5.76″.) Personally, I think this is a very good thing.

Before I forget, Scale to Fit Paper is now ON by default in the File | Print dialog. I’m sure this is directly related to the 13.33×7.5 slide size feature above. (So the whole 16×9 slide will print on the page.)

Slide Size tool. There’s a new tool on the Design tab to help you switch your slides from 4×3 to 16×9 and back without completely wrecking all your content. Yay!

Variants and SuperThemes. We now have variations of a theme that are built-in. Most variants are very similar to the “base” theme, with changes to the color or font set. Themes that include variants are called SuperThemes.

Format panes. Instead of having a Format dialog, we now have a Format pane that is docked to the right side of the work space.

Insert Online Pictures. The Office programs now distinguish between inserting pictures from your hard drive and inserting them from online. Similar settings exist for Video and Audio.

Logging in. Log into your Microsoft.com account, and you’ll see more content and have more options. For example, if I’ve logged onto my MSFT account, my SkyDrive will show up (along with office.com, Flickr and Bing image search) when I click Insert Online Pictures.

Saving. When you save, online locations such as SharePoint team sites and Skydrive are in the forefront. Don’t forget to click Computer before browsing to a location if you’re saving to your hard drive!

Present Online. This is really the equivalent of Broadcast Slide Show, but the presenter has the option of letting people download the presentation as well (or not). Be aware — if you allow the audience to download, then they’ll also have the ability to navigate through the broadcast presentation at their own pace while you’re presenting.

Save as Video. By default this now creates an MPEG-4 Video. WMV (Windows Media Video) is still an option.

New Slide button. They finally added this to the Insert tab! (Only took three versions, sheesh. Unfortunately it’s still in the wrong place — it should be on the other side of the Images group, but nobody listens to me!) Don’t worry, it’s still on the Home tab also.

Popup menu in Slide Show View. The buttons that show in the lower left corner during slide show view have been tweaked for a better touch experience. They’re not as subtle as they could be, but they’re not as bad as they could be, either.

See All Slides. When in a slide show, we now have a view that looks kind of like Slide Sorter View. (There’s no longer a Go to Slide menu with an option to navigate by slide title, though.)

Presenter View. This is all kinds of new and all kinds of cool. And if you only have one monitor, use Alt+F5 to see and practice with Presenter View!

Page Curl transition. Yes, you heard (read) me right — we finally have a page turn transition! It’s actually called Peel Off, but what’s in a name? Actually, we have quite a few new transitions, including Page Curl, Curtains, and Fracture (among others). Also, while we’re on the subject of transitions, the bounce has been removed from the end of the Pan transition.

Play From. The animation pane now lets you play from the selected animation.

Motion Path End. A ghosted object now shows up to show you the end position of a motion path. Very, very helpful!

Animation Zombies. Some of the old animations (Stretch and Collapse, for example) are baaaaack!

Threaded Comments. Comments have been enhanced with a Comments Pane that shows the comments thread and avatars for those commenting.

Enhanced Smart Guides. Those whisker things that showed up in PowerPoint 2010 to help you align and position objects on a slide? Well, they got even better in 2013 because now they also help with distribution.

Enhanced Guides. We now have the equivalent of lockable, colorable guidelines, people! Wahooo! Put one set of guides on your slide master (to indicate margins, for example). Add others to any layouts that might require different guides. And add even more to the regular slides as you’ve always done. When you’re in Normal (editing) View, only the guides on the slides will be selectable — otherwise you’ll need to go to Master View to move them. Oh, and did I mention that you can recolor all of these? Just right-click a guide…

Color Picker. We now have eyedroppers to pick up and apply fill, outline and font colors. All together now: Thank you, PowerPoint Team!

Merge Shapes. These tools, which are similar to the Pathfinder tools in Illustrator, are now on the Ribbon (on the Drawing Tools Format tab). The group is called Merge Shapes instead of Combine Shapes. There is also a new tool, Fragment, to complement the other four.

Semantic Zoom. We can zoom and pan in Slide Show View now.

Charts. Charting is a lot better in many ways and a lot worse in others. Now a small Excel datasheet opens above the chart instead of Excel opening and taking up half your screeen. The interface is vastly improved. They added a combo chart to the types of charts (yay!). They added new chart styles (good) but removed the 2007/2010 chart styles (bad). They made the default chart font size 12 points (good or bad, depending if you like it or not) and the default chart font color a tint/shade of Dark 1/Light 1 (horrible if Dark 1/Light 1 is anything besides black or white).

PowerPoint Web App. This has lots of new features. We can now add, edit and format shapes, apply a new theme, and use animations and transitions. We also have audio and video playback in both Reading and Slide Show views. It still supports co-authoring, but now it supports co-authoring with regular ol’ PowerPoint, too. And if you embed your presentation into a web page or blog, it’s no longer just static pictures — it’s actually like a regular presentation with animations, transitions, audio and video. (Old embedded presentations will automatically update to behave this way, too.)

Default Office Theme is a bit different. The colors are different and the default effects set is way more subtle.

SmartArt graphics. We got some new SmartArt diagrams.

Backstage. Along with the overall interface overhaul to a newer, flatter look, Backstage has been reorganized once again.

WHAT’S MISSING (WELL, KIND OF…)

Save as HTML. Gone. Done. Kaput. It’s not in the interface, and it’s not accessible with VBA either.

Insert ClipArt. This has been replaced with Insert Online Pictures. No clipart or picture collections are installed with Office 2013.

Not missing, just moved. Theme Colors, Fonts and Effects dialog are no longer on the Design tab, but they are available in Slide Master View. Background Styles are available in Slide Master View.

Broadcast Slide Show. This isn’t really gone — it’s just morphed into Present Online.

Outline pane. Again, this isn’t actually gone, it just doesn’t show up any more next to the Slides pane in Normal (editing) View. Go to the View tab to turn the Outline pane on and off.

Combine Shapes. For those of you who used these, they’re not gone. They’ve been promoted to the Drawing Tools Format tab of the Ribbon and are now called Merge Shapes.

In Slide Show View, there’s no longer a Go to Slide menu with an option to navigate by slide title. Instead, we have the new See All Slides view, which looks similar to Slide Sorter view.

Posted in Computer Software, Computer Softwares, Documentations, My Research Related, Project Related, Research Menu | Tagged: , , | Leave a Comment »

What’s New In Microsoft excel 2013 ?

Posted by Hemprasad Badgujar on July 9, 2014

Microsoft’s updated spreadsheet tool isn’t getting a lot of new, whiz-bang features, but it is becoming more functional. That’s something both new and experienced users will enjoy—especially a new approach to an old problem that used to require a cumbersome workaround. Complex tasks become easier to perform, thanks to tools such as Recommended Charts and Recommended PivotTables tools. Other changes place choices closer to your data, and use big-business brawn to crunch data right into Excel.

To help you get up to speed, read on for 10 new features that make your work easier in the new Excel. Want to know more about the new Office suite? You’ll find our full review of Office 2013 here, as well 10 killer features in the new Word 2013 here.

Start screen sets the scene

Excel’s new Start Screen helps you get to work more quickly. Along its left edge are the most recently used worksheets, any of which can be pinned to your Recent list so they will always be visible. Here, too, you can click Open Other Workbooks to access your files from a disk or the cloud. The Start Screen’s top-right corner also shows the SkyDrive (or SharePoint) account you are currently connected to.

A range of templates appears here to help you quick start a project. These can also be pinned, or you can use the search feature to look online for other templates. A list of suggested searches can help you get started.

New users will appreciate the template choices, and existing users will likee the Recent file list and quick access to existing files. Although the Start Screen can be disabled, I find it useful enough to stick with it.

The Open tab has links to recently accessed files and locations.

Enjoy a new Backstage View

The Backstage View, introduced in Office 2010, is accessible from the File menu. In Excel this has been revamped to show exactly what you’re doing so you can choose the appropriate task.

The Open tab now gives you access to recently accessed workbooks, making it a combination of the Open and Recent tabs from Excel 2010. You can pin worksheets to this list or click Computer to access recently accessed locations (any of which you can pin permanently here, too). There’s also access to your SkyDrive account, and the option to set up additional SkyDrive or SharePoint accounts.

Want to split first and last names into two columns? Look to the new Flash Fill feature.

Make Flash Fill magic

The most whiz-bang new feature is the Flash Fill tool. Its predictive data entry can detect patterns and extract and enter data that follows a recognizable pattern. It solves some common problems that currently require cumbersome workarounds to achieve.

One such problem is extracting a person’s first name from a column of full names. In a blank column adjacent to the one that contains full names, you simply type the first name and then click the Home tab, and select Fill, Flash Fill. The first names of everyone in the list will be entered into that that column immediately. You can use the same process to extract last names, to join first and last names, to extract months, days or years from dates and even extract values from cells.  While you could have always done this with formulas, now Flash Fill ensures anyone can do it very quickly and easily.

Take the guess work out of which chart to choose to best display your data.

Simplify choices with Recommended Charts

This falls somewhere between a whiz-bang new feature and something that makes working in Excel more intuitive. Recommended Charts shows only a subset of chart types that are appropriate to the data you’ve selected. It will help inexperienced users create charts that help explain the data and don’t confuse the viewer.

To use the tool, select the data that you want to chart, click the Insert tab and selectRecommended Charts. A dialog appears with a range of charts to choose from—click each in turn to see how your data will look plotted on that chart. Select the desired option and click OK, and the chart is created automatically.

Change the look of your chart by selecting options from the pop-up menu.

Chart tools get smarter

In previous versions of Excel, when a chart is selected, the Chart Tools tab revealed three additional tabs: Design, Layout, and Format. The interface is simpler in Excel 2013, with only the Design and Format tabs to choose from.

In addition, a set of icons appears outside the top right edge of a chart when it is selected. Click any of these buttons—Chart  Elements, Chart Styles or Chart Filters—to reveal additional chart formatting options. Click Chart Elements to add or remove elements, such as axis titles and legends; click Chart Styles to change the style and color of your chart; or click Chart Filtersto view filtered data using a live preview.

Quick Analysis offers formatting, totals and charts for analyzing your data.

Quickly analyze your data

The new Quick Analysis tool can help both new and experienced users find options for working with selected data. To use it, select the data to analyze, and the Quick Analysis icon  appears in the bottom-right corner of the selected data.

Click that icon, and a dialog appears showing a range of tools for analyzing the data, such as Formatting, Charts, Totals, Tables and Sparklines. Click any option, and a series of selectable choices appear; preview those choices by mousing over them. Next, click the option you like to apply it to your data. This feature speeds up the process of formatting, charting and writing formulas.

PivotTables just became ridiculously simple to create.

Answer questions instantly with Pivot Tables

Pivot Tables are a powerful tool for analyzing and answering questions about  your data, but they’re not easy for new users to create. For the first time, though, if you can click a mouse key, then you can create a meaningful Pivot Table, thanks to the new Recommended PivotTables. To use it, select your data, including headings, and chooseInsert, Recommended PivotTables. A dialog appears showing a series of PivotTables with explanations of what they show. All you need do is to select the table that shows what you want to see, click OK,and the PivotTable is automatically drawn for you.

Excel 2013 now integrates Power View for beefy analysis and reporting.

imelines

A timeline lets you filter records in a PivotTable—it works similar to a slicer, but you’ll filter by dates. For instance, Figure E shows a PivotTable and timeline. (I used the same data range used in #3.) Once you have a PivotTable arranged, adding the timeline is simple:

  1. With the PivotTable selected, click the contextual Analyze tab.
  2. In the Filter group, click Insert Timeline.
  3. In the resulting dialog, check the date field (in this case, that’s Date) and click OK. Excel will embed the timeline alongside the PivotTable.

 

Excel_New_Ftrs.FigE.jpg

 

Use the new Timeline with a PivotTable.

To use the timeline, just drag the scroll bar or click a tile to further filter personnel totals by specific months. In the upper-right corner, you can change to years, quarters, months, and days. To clear the timeline filter, click the Clear button in the upper-right corner.

Make quick reports with Power View

The Power View add-in, available for previous versions of Excel, is now integrated inside Excel 2013. Power View is typically used for analyzing large quantities of data brought in from external data sources—just  the sort of tool that big business might use.

Incorporated within Excel, it’s now  accessible to anyone. To see it at work, select your data and choose Insert, Power View. The first time you use it, the feature installs automatically. Then a Power View sheet will be added to your workbook, and the analysis report will be created.

You can add a title and then filter the data and organize it to display the way you like. The Power View tab on the Ribbon toolbar displays report format options, such as Theme and text formats, as well View options for Field List and Filters Area panels that you can use to filter and sort your data.

Try to work on a worksheet that someone else is editing? You’ll be warned that it’s locked. You can view and download it, but can’t change it.

Share files and work with other people

Working with other people on shared files in real time is a double-edged sword. While it’s useful to do this, you will face problems when two people try to change the same item at the same time. In Excel 2013 you can share and work collaboratively on files with others via SkyDrive using the Excel WebApp, and multiple people can work on the same file at the same time. However, you cannot open a worksheet from SkyDrive in Excel 2013 on your local machine if someone else is currently working in the same worksheet. This protects the worksheet against conflicting changes.

Instead, if one person is editing an Excel file that’s stored online, others with permission can view and download it, but they cannot change the original, whichis locked until the person working with it is finished.

Like other applications in the Office 2013 suite, Excel 2013 saves files by default to the cloud. You can open, view, and edit Excel files  online in a browser using the Excel WebApp without having Excel 2013 on the local hard drive.

Share your cloud-stored worksheets with friends on Facebook, Twitter, or LinkedIn.

features to explore

Get started quickly

Some of the templates that are available in Excel

Templates do most of the set-up and design work for you, so you can focus on your data. When you open Excel 2013, you’ll see templates for budgets, calendars, forms, and reports, and more.

Instant data analysis

Data Analysis Lens

The new Quick Analysis tool lets you convert your data into a chart or table in two steps or less. Preview your data with conditional formatting, sparklines, or charts, and make your choice stick in just one click. To use this new feature, see Analyze your data instantly.

Fill out an entire column of data in a flash

Flash Fill in action

Flash Fill is like a data assistant that finishes your work for you. As soon as it detects what you want to do, Flash Fill enters the rest of your data in one fell swoop, following the pattern it recognizes in your data. To see when this feature comes in handy, see Split a column of data based on what you type.

Create the right chart for your data

Recommended Charts

With Chart recommendations, Excel recommends the most suitable charts for your data. Get a quick peek to see how your data looks in the different charts, and then simply pick the one that shows the insights you want to present. Give this feature a try when you create your first chart.

Filter table data by using slicers

Table slicer

First introduced in Excel 2010 as an interactive way to filter PivotTable data, slicers can now also filter data in Excel tables, query tables, and other data tables. Simpler to set up and use, slicers show the current filter so you’ll know exactly what data you’re looking at.

One workbook, one window

Two workbooks, two windows

In Excel 2013 each workbook has in its own window, making it easier to work on two workbooks at once. It also makes life easier when you’re working on two monitors.

New Excel functions

New Web functions

You’ll find several new functions in the math and trigonometry, statistical, engineering, date and time, lookup and reference, logical, and text function categories. Also new are a few Web service functions for referencing existing Representational State Transfer (REST)-compliant Web services. Look for details in New functions in Excel 2013.

Save and share files online

Online places to save your workbook

Excel makes it easier to save your workbooks to your own online location, like your free OneDrive or your organization’s Office 365 service. It’s also simpler to share your worksheets with other people. No matter what device they’re using or where they are, everyone works with the latest version of a worksheet— and you can even work together in real time. To learn more about it, see Save a workbook to the Web.

Embed worksheet data in a web page

To share part of your worksheet on the web, you can simply embed it on your web page. Other people can then work with the data in Excel Online or open the embedded data in Excel.

Share an Excel worksheet in an online meeting

No matter where you are or what device you’re on—be it your smartphone, tablet, or PC—as long as you have Lync installed, you can connect to and share a workbook in an online meeting. To learn more about it, seePresent a workbook online.

Save to a new file format

Now you can save to and open files in the new Strict Open XML Spreadsheet (*.xlsx) file format. This file format lets you read and write ISO8601 dates to resolve a leap year issue for the year 1900. To learn more about it, seeSave a workbook in another file format.

Top of Page TOP OF PAGE

New charting features

Changes to the ribbon for charts

Chart Tools

The new Recommended Charts button on the Insert tab lets you pick from a variety of charts that are right for your data. Related types of charts like scatter and bubble charts are under one umbrella. And there’s a brand new button for combo charts—a favorite chart you’ve asked for. When you click a chart, you’ll also see a simpler Chart Tools ribbon. With just a Design and Format tab, it should be easier to find what you need.

Fine tune charts quickly

Chart buttons to change chart elements, layout, or chart filters

Three new chart buttons let you quickly pick and preview changes to chart elements (like titles or labels), the look and style of your chart, or to the data that is shown. To learn more about it, see Format your chart.

Richer data labels

Bubble chart with data labels

Now you can include rich and refreshable text from data points or any other text in your data labels, enhance them with formatting and additional freeform text, and display them in just about any shape. Data labels stay in place, even when you switch to a different type of chart. You can also connect them to their data points with leader lines on all charts, not just pie charts. To work with rich data labels, see Change the format of data labels in a chart.

View animation in charts

See a chart come alive when you make changes to its source data. This isn’t just fun to watch—the movement in the chart also makes the changes in your data much clearer.

Powerful data analysis

Create a PivotTable that suits your data

Recommended PivotTables for your data

Picking the right fields to summarize your data in a PivotTable report can be a daunting task. Now you can get some help with that. When you create a PivotTable, Excel recommends several ways to summarize your data, and shows you a quick preview of the field layouts so you can pick the one that gives you the insights you’re looking for. To learn more about it, see Create a PivotTable to analyze worksheet data.

Use one Field List to create different types of PivotTables

Add more Tables in the Field List

Create the layout of a PivotTable that uses one table or multiple tables by using one and the same Field List. Revamped to accommodate both single and multi-table PivotTables, the Field List makes it easier to find the fields you want in your PivotTable layout, switch to the new Excel Data Model by adding more tables, and explore and navigate to all of the tables. To learn more about it, see Use the Field List to arrange fields in a PivotTable.

Use multiple tables in your data analysis

The new Excel Data Model lets you to tap into powerful analysis features that were previously only available by installing the Power Pivot add-in. In addition to creating traditional PivotTables, you can now create PivotTables based on multiple tables in Excel. By importing different tables, and creating relationships between them, you’ll be able to analyze your data with results you aren’t able to get from traditional PivotTable data. To learn more about it, see Create a Data Model in Excel.

Power Query

If you’re using Office Professional Plus 2013 or Office 365 Pro Plus, you can take advantage of Power Query for Excel. Use Power Query to easily discover and connect to data from public and corporate data sources. This includes new data search capabilities, as well as capabilities to easily transform and merge data from multiple data sources so that you can continue to analyze it in Excel. To learn more about it, see Discover and combine with Power Query for Excel.

Power Map

Power Map

If you’re using Office 365 Pro Plus, Office 2013, or Excel 2013, you can take advantage of Power Map for Excel. Power Map is a three-dimensional (3-D) data visualization tool that lets you look at information in new ways by using geographic and time-based data. You can discover insights that you might not see in traditional two-dimensional (2-D) tables and charts. Power Map is built into Office 365 Pro Plus, but you’ll need to download a preview version to use it with Office 2013 or Excel 2013. See Power Map for Excel for details about the preview. To learn more about using Power Map to create a visual 3-D tour of your data, see Get started with Power Map.

Connect to new data sources

To use multiple tables in the Excel Data Model, you can now connect to and import data from additional data sources into Excel as tables or PivotTables. For example, connect to data feeds like OData, Windows Azure DataMarket, and SharePoint data feeds. You can also connect to data sources from additional OLE DB providers.

Create relationships between tables

When you’ve got data from different data sources in multiple tables in the Excel Data Model, creating relationships between those tables makes it easy to analyze your data without having to consolidate it into one table. By using MDX queries, you can further leverage table relationships to create meaningful PivotTable reports. To learn more about it, see Create a relationship between two tables.

Use a timeline to show data for different time periods

A timeline makes it simpler to compare your PivotTable or PivotChart data over different time periods. Instead of grouping by dates, you can now simply filter dates interactively or move through data in sequential time periods, like rolling month-to-month performance, in just one click. To learn more about it, see Create a PivotTable timeline to filter dates.

Use Drill Down, Drill Up, and Cross Drill to get to different levels of detail

Drilling down to different levels of detail in a complex set of data is not an easy task. Custom sets are helpful, but finding them among a large number of fields in the Field List takes time. In the new Excel Data Model, you’ll be able to navigate to different levels more easily. Use Drill Down into a PivotTable or PivotChart hierarchy to see granular levels of detail, and Drill Up to go to a higher level for “big picture” insights. To learn more about it, seeDrill into PivotTable data.

Use OLAP calculated members and measures

Tap into the power of self-service Business Intelligence (BI) and add your own Multidimensional Expression (MDX)-based calculations in PivotTable data that is connected to an Online Analytical Processing (OLAP) cube. No need to reach for the Excel Object Model—now you can create and manage calculated members and measures right in Excel.

Create a standalone PivotChart

A PivotChart no longer has to be associated with a PivotTable. A standalone or de-coupled PivotChart lets you experience new ways to navigate to data details by using the new Drill Down, and Drill Up features. It’s also much easier to copy or move a de-coupled PivotChart. To learn more about it, see Create a PivotChart.

Power View

Power View

If you’re using Office Professional Plus, you can take advantage of Power View. Simply click the Power View button on the ribbon to discover insights about your data with highly interactive, powerful data exploration, visualization, and presentation features that are easy to apply. Power View lets you create and interact with charts, slicers, and other data visualizations in a single sheet. Learn more about Power View in Excel 2013.

New and improved add-ins and converters

Power Pivot for Excel add-in

If you’re using Office Professional Plus 2013 or Office 365 Pro Plus, the Power Pivot add-in comes installed with Excel. The Power Pivot data analysis engine is now built into Excel so that you can build simple data models directly in Excel. The Power Pivot add-in provides an environment for creating more sophisticated models. Use it to filter out data when importing it, define your own hierarchies, calculation fields, and key performance indicators (KPIs), and use the Data Analysis Expressions (DAX) language to create advanced formulas. Learn more about the Power Pivot in Excel 2013 add-in.

Inquire add-in

If you’re using Office Professional Plus 2013 or Office 365 Pro Plus, the Inquire add-in comes installed with Excel. It helps you analyze and review your workbooks to understand their design, function, and data dependencies, and to uncover a variety of problems including formula errors or inconsistencies, hidden information, broken links and others. From Inquire, you can start a new Microsoft Office tool, called Spreadsheet Compare, to compare two versions of a workbook, clearly indicating where changes have occurred. During an audit, you have full visibility of the changes in your workbooks.

Cloud support

Microsoft claims that its cloud support is the true shining star of the Office 2013 suite. If you need it, you probably agree; many organizations aren’t taking full advantage of it yet. If you’re curious, you can quickly hook up to SkyDrive or your organization’s SharePoint team site by using the Save As (or Open) screen, as shown in Figure F. Doing so has two advantages:

  • You have quick and easy access to your Excel files on any device that runs Excel 2013 (including a Windows tablet and smartphone).
  • Using Office 365 (you’ll need a subscription), you canreview and edit your workbooks online using almost any web browser.
    Excel_New_Ftrs.FigF.jpg

Data Model and Relationships

Excel 2013’s new integrated data model support is well beyond a simple recommendation tip like this. You’ll want to study and familiarize yourself with all of the possibilities:

  • Create PivotTables based on multiple tables.
  • Create one-to-one and one-to many relations between tables.
  • Easily connect to OData, Windows Azure DataMarket, and SharePoint.
  • Drill down to detail levels in a PivotTable or PivotChart.
  • Drill up for a high-end view.

Apps for Office

This new feature provides quick access to specialized programs at Office Store. Just a quick click and you’re shopping! To install an app, click the Insert tab and then click Apps for office in the Apps group. You’ll need an account at the store, which the feature will help you create the first time you use it. Figure G shows Bing Maps as an installed app.

Excel_New_Ftrs.FigG.jpg

 

After creating an Office Store account, adding Bing Maps took just a couple of clicks.

Present online

Sharing a workbook online used to take a bit of preparation, but in Excel 2013, on-the-fly sharing is no problem. First, install Lync. If you have Office Professional Plus, you already have it, but you’ll need to configure it. Before sharing, sign into Lync. Then, return to Excel 2013, close all workbooks that you don’t want to share, and do the following:

  1. Click the File tab.
  2. Choose Share in the left pane.
  3. Click Present Online (in the Share section).
  4. Click Present.
  5. Choose a Lync meeting or create one, and click OK.

At this point, you can share the workbook and even allow others to update it.

Share work to your social networks

Here’s a handy way to share a to-do list, an event planning worksheet, or whatever spreadsheet you desire with your social network. You can now share Excel workbooks with Facebook and more from within Excel 2013 itself. To see the Post to Social Networks option, the best way to save the file first to SkyDrive.

If you haven’t saved your file to SkyDrive, then choose File, Share, and click Invite People. You’ll be stepped through the process of saving the file to the Cloud so that Save Asoptions later appear automatically. Once this is done, you are returned to the Share panel where the Post to Social Networks option now appears. Here you can select any social network that you have linked to your Office 2013 account. You can select whether viewers can view or edit your shared worksheet, and you can include a message, and then post it for review.

Posted in Computer Software, Computer Softwares, Documentations, Free Tools, My Research Related, Research Menu | Tagged: , , | Leave a Comment »

What’s New In Microsoft Word 2013 ?

Posted by Hemprasad Badgujar on July 9, 2014

A word processor is indispensable for anyone who creates documents, be it for work, school, or writing angry letters to your representatives in Congress. Now that Microsoft has finally released Office 2013 to the general public, we’re naming what we think are the 10 best new features in Word 2013. (We reviewed the whole enchilada last December, when it became available to Microsoft TechNet subscribers. You can read our opinionhere.)

Word 2013 boasts new and improved features across the board, spanning document creation to reading, editing, and collaboration. What’s even better is that Microsoft has made these advanced features easier for everyone to use.

The new Design tab includes document formatting options to format the entire document.

A New Look for Word

The first change you’ll see when you fire up Word 2013 is a new landing page (rather than a blank document, as in older versions of Word). In the left pane, you’ll see a list of your most recent Word documents as well as the option to open previously viewed documents. In the right pane, you can pick from various templates, such as blank, invoice, blog post, and so on. You can also search through Microsoft’s library of templates using certain keywords, such as “fundraiser” or “proposal.” The new landing page may take some getting used to, but will prove helpful in accessing templates you might have otherwise overlooked.

Microsoft Word has a new landing page.
Microsoft Word has a new landing page.

Integrated Account Management & Connected Services

The landing page provides you with a sleek interface organized into three sections: the navigation sidebar, account information and product information. The navigation bar allows you to access essential word processing functionalities including sharing, exporting and return buttons. The overall Word interface is highly responsive obeying the click, instantly. As illustrated below, Word 2013 comes with a customizable themes (that can be selected from the Office Background dropdown menu boasting multiple attractive themes). Moreover, understanding the power of social media and its penetration in generating viral content, Microsoft has decided to ride the wave by offering Connected Services that virtually allows you to access documents from any device on the go. Just use your Microsoft or SkyDrive account or connect using Youtube. Still not satisfied with the feature? Why not Add a service and connect your work to your favorite online hot spots. The Product Information on the left allows you toManage account or analyze the overall subscription of the Office Suite with update details.

Microsoft Word Account Preview

When adding a new service, Word 2013 allows you to link your existing Microsoft account with another online service like LinkedIn. If you don’t have a LinkedIn account, just click the Join Now button on the top right corner to create one. You can specify the access duration and upon approving the link, the new service will get connected to Word, successfully.

Word 2013 Connected Services

The new Design tab

Document formats can be further extended by choosing Themes, Colors, and Fonts to use with them. If you come up with something you’d like to use all the time, the new Set as Default option allows you to make the current combination of formatting settings the default for all new documents.Word 2007 and Word 2010 added interesting features for styling a document, but the tools were scattered throughout the user interface, and they were difficult to use. The new Word 2013 Design tab consolidates all these tools onto one tab, so they’re easy to find. Microsoft has also added a visual element to its Document Formatting tool that allows you to preview a document style before applying it to the entire document. You’ll also find a range of new document format designs to choose from.

The new Alignment Guides in Word 2013 show you when an object is lined up with another object or page element.

Navigation Task Pane

Word 2013 - Navigation Task Pane

 

Bookmarks

When you reopen a document, a bookmark is placed in the last location you scrolled to, and you can keep reading right where you left off.

Bookmarks show the last location you scrolled to.

Object Placement Beyond The Right Click

In all previous versions, placement options relevant to objects like pictures, figures, etc. were accessible from the right-click menu. You may have used the Wrap Text feature, placement and adjustment with text, re-sizing and rotation utilities. In Word 2013, a simple click reveals all relevant functionality with the layout options floating on the right, while re-sizing buttons on and around the object. Options can be easily expanded by clicking See more. Double click on the picture to zoom for a better view of the target. With live layout and alignment guides, you can drag your image wherever you want with the text adapting in real-time, accordingly.

Word Picture Placement

Enhanced Templates Directory

A comprehensive template directory comes to view upon clicking New. It is advisable to load the Welcome to Word document for a quick tour of Word 2013. A large number of useful and popular templates are organized in the New tab as user-friendly tiles. Moreover, the search bar allows you to browse, view and select from hundreds of online templates in the Office Library.  Suggested searches enhance the searching experience by highlighting frequently used categories.

Word 2013 Landing

Office Apps: Redefining Creativity

Office Apps are a new way of adding creative and useful applications to Microsoft Office 2013 suite. The Merriam-Webster Dictionary and eFax app for Word 2013 are useful ways of increasing productivity while creating and managing documents. Moreover, there are loads of free featured apps and a huge collection in the Office Store awaiting your click. You can manage your apps and refresh to keep track of any updates.

 Insert Pictures From The Web, Instantly

The Insert tab on the ribbon reveals some new and useful additions. One such feature is the option to insert online pictures. Microsoft has updated its Royalty Free Photos and Illustrations directory that can be accessed using the search bar in the Insert Pictures window. You can also browse your online SkyDrive storage for clipart stored in the cloud. Too often do we use our Image Search to identify relevant photos in the web browser to paste into Microsoft Word. Now, you can use the Bing Image Search and Flickr account to hunt and insert online pictures for good from within Word 2013.

Insert Online Pictures

Alignment with Alignment Guides

If you have text wrapping set to an option such as Square, the Alignment Guides also show when the object is aligned with the top of a paragraph or to a heading.This new feature makes lining up images and other objects a cinch in Word 2013. When you move an object such as an Image, Chart, or SmartArt illustration around in a document, Alignment Guides automatically appear to show you when the object is lined up with other elements on the page. The guides also show you when the object is lined up to key page locations, such as the edge of the page and the left and right margins.

Read mode provides a superior experience for anyone who uses Word primarily to read documents others have created.

Comfortable reading in Read mode

If you use Word more to read documents than to create them, you’ll like Word 2013’s new Read mode. It automatically resizes a document to the full window. Click the on-screen arrows to flip through the pages, or swipe the screen from either edge of the display if you’re using a touch-screen monitor. Switch to page view for vertical scrolling. Right-click on any unfamiliar words to display a definition without existing read mode. You can also click on any image, table, or chart to enlarge it for easier reading.

The new comments tool encapsulates related comments into a single bubble, which makes them much easier to follow.

Smarter collaboration

 

If you collaborate with others on Word documents, you know how quickly conversations can become difficult to follow, because Word’s comments tool treats every utterance as a new comment.

In Word 2013, you can reply to a comment within that comment by clicking the Comment Reply button. This captures the entire discussion of a given point inside a single comment box, which will appear as a small bubble in the document’s margin.

You can also lock the change-tracking feature, so it can’t be bypassed unless the collaborator provides the correct password.

And with the new Simple Markup option, you can hide complex markups and view the final version of the document. Switch between this and All Markup view from the Review tab or by double clicking the line in the left margin beside a tracked change.

Word can now open PDF files so you can edit and complete them in Word including working with table data in the file.

Open and edit PDFs inside Word


Word 2013 can not only open a PDF document, it also enables you to edit it—without need of a third-party application. You can also edit the data inside tables and move images around the document. When you’re finished, you can save the document as either a PDF or a Word file. This is a must-have feature for anyone who works with PDFs frequently.

Select a picture, chart, or SmartArt object, and the new Layout Options icon lets you configure placement and text wrapping options for it.

Discoverable layout options

You can also select Move with text or Fix position on page to control the location of the object. Click See more to open the old Layout dialog, which offers other options for positioning the object on the page.New layout options in Word 2013 make features such as wrapping text around an illustration much easier to use. When you click an image, a chart, or a SmartArt object in a Word document, a Layout Options icon appears outside its top right corner. Click it to select text wrapping options such as Tight, Square and Through.

As with the other applications in the Office 2013 suite, a formatting task pane opens when you right-click an object and choose, for example, Format Picture or Format Shape. This stays open as you work and shows formatting options relevant to the currently selected object.

If you use tables in your documents, the new Border Painter tool and Border Styles feature simplify and speed up formatting.

New table border tools

Select a Line Style, Line Weight, and Pen Color; or choose a preset from the Border Styleslist and paint the borders onto the table. You can also sample an existing border, using the Border Sampler tool in the Border Styles panel, and then use the Border Painter to paint that style elsewhere in the table.Formatting a Word table by adding different width and style borders has always been a pain point. Word 2013’s handy Border Painter tool makes this task supremely easy. To access it, choose Table Tools, Design, Border Painter.

There are new icons for inserting rows and columns in tables and options on the Mini Toolbar for deleting them, too.

Insert Online Videos And Interactive Content Easily

In an attempt to promote dynamic content in documents, Word 2013 presents to you the option to add online videos may it be from social media sites like Youtube, search engines like Bing Video search or videos from any other website (using embed code). To insert a video successfully, type a keyword in the relevant search bar to view results.

Word 2013 displays all results, mentioning the total number of links. Just click the result to preview the video before actually inserting it into the document. Similarly, multiple video results can be added by selecting, previewing and inserting, accordingly. Text Reflow allows you to fit the interactive content in the most appropriate manner.

Video Search from Word 2013

Simplified Markup View For Better Collaborations

Working with text had never been so interactive. Online Pictures and Videos already added color and dynamic content to the Word document ensuring fast track follow up on relevant topics. Now, with a simplified markup view meant to highlight changes in your document in a neat, effective manner encourages you to focus on collaborating work. The left sidebar indicates changes while a small cloud on the right indicates comments at the respective places. With Word 2013, you can instantly reply to comments in an organized manner to give rise to useful discussion threads. With Microsoft SkyDrive and SharePoint, working on projects and documents online as a collaborated effort could have never been simpler. These markers and comment threads allow you to highlight necessary details, corrections and pointers for the rest of your team to keep in mind. Similarly, keeping track of the activity around your workspace has thus, been made possible.

Word 2013 guide - Commenting feature

More new table features

Word has always had weak table tools, and Word 2013 finally addresses the problem. You can now add a new row to a table by hovering your mouse just outside the left edge of the table at the point at which the row is to be inserted. A small icon will appear; click on it and you’re done. There’s a similar icon for easily adding a new column. New Delete buttons on the Mini Toolbar make it easy to delete columns and rows; if the table itself is selected, the option lets you delete the entire table.

New Expand/Collapse options let you collapse and expand a document to make it easier to work on.

Collapse and expand a document

Long documents can become unruly to manage, especially if you’re working in just a small portion of it. Word 2013 lets you collapse and expand a document, so you see only the portion you need. To do this, you must format the document’s headings using the built-in styles Heading 1, Heading 2, and so on.

Switch to Print Layout view and you can collapse the document by hovering your mouse to the left of a formatted heading. Click the small disclosure triangle to hide the paragraphs between this heading and the next, leaving just the heading text visible.

Right-click a heading formatted with one of the heading styles to access the Expand/Collapse option, which gives you menu control for this feature.

Now you can present a document online to others in real time.

Understand The Impact, Definitely

The Review tab has a new Define feature that presents definitions of words and phrases, instantly using the relevant Word Apps like the Merriam-Webster Dictionary. Results and displayed on the right sidebar as soon as you select the text. Say goodbye to right-click menu and dictionary access when your results are displayed at a single click. Now, you can truly understand the impact of your content.

Word 2013 guide - Define feature

Verdict

It is always beneficial to look at new features objectively. Microsoft Word 2013 has indeed come with new tidings for progress in the area of word processing. You are now in a position to present documents online to people who do not have the latest version of Microsoft Office, how? This can now be achieved using the cloud-based storage and synchronization of documents for access, wherever needed. Just provide your team members with the respective link that can be pasted in browsers for viewing. Thus, with a modern, polished and internet-friendly Word 2013, the new life spells out productivity for us all.

Present a document online

Once everyone is connected to the service—which is run via the Microsoft Word Web App—they’ll be able to follow along as you present the document. The interface supports comments being made during the presentation, and participants can create a printable and downloadable PDF of the document if desired.Office 2013’s new Office Presentation Service allows you to present Word documents online. You must be signed into your Microsoft Account to use this feature. When you’re ready to share your document, chooseFile, Share, Present Online, and click the Present Online button to upload your document to the cloud. You will get a link that you can email or share with others so they can join the presentation.

There’s a lot to like about the new Microsoft Word 2013. The new features collectively will make your day-to-day work much easier to perform whatever that happens to be.

Posted in Computer Research, Computer Software, Computer Softwares, Documentations, Free Tools, My Research Related, Research Menu | Tagged: , , , , | Leave a Comment »

OpenCV installation for Ubuntu 12.04

Posted by Hemprasad Badgujar on June 23, 2014

The latest Long Term Support version of Ubuntu(12.04 LTS) is out and a new version of OpenCV was released as well. This means that now is a great opportunity to update my OpenCV installation guide to the latest versions, Ubuntu 12.04 LTS and OpenCV 2.4.9.

We are going to setup OpenCV to use the new Qt highgui interface, which is much better than the simple highgui interface. Also, we will install OpenCV with support for OpenGL, as well as reading and writing videos, access to a webcam, Python, C and C++ interfaces, and Intel Threading Building Blocks (TBB).

OK, so the first step is to make sure that everything in the system is updated and upgraded:

1 sudo apt-get update
2 sudo apt-get upgrade

Now, you need to install many dependencies, such as support for reading and writing image files, drawing on the screen, some needed tools, etc… This step is very easy, you only need to write the following command in the Terminal:

1  sudo apt-get install build-essential cmake pkg-configRemove any installed versions of ffmpeg and x264 by entering the following command:
sudo apt-get remove ffmpeg x264 libx264-dev

Following command will install required Image I/O libraries.

sudo apt-get install libjpeg62-dev libtiff4-dev libjasper-dev

Get all the dependencies for x264 and ffmpeg by entering the following commands:
sudo apt-get update
sudo apt-get install build-essential check
install git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev

Download and install gstreamer by entering the following command:
sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg

Download and install VLC
sudo apt-get install vlc vlc-dbg vlc-data libvlccore5 libvlc5 libvlccore-dev libvlc-dev tbb-examples libtbb-doc libtbb2 libtbb-dev libxine1-bin libxine1-ffmpeg libxine-dev 

Install required video libraries.

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
**sudo apt-get install x264 (Not needed since we installed x264 above)

Install MySQLC++Client
sudo apt-get install libmysqlcppconn-dev

Install gtk libraries for highgui

sudo apt-get install  libgtk2.0-dev

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install libqt4-core libqt4-dev libqt4-gui qt4-dev-tools

Download and install install x264. Recent stable snapshot of x264 from ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
cd ~/OpenCV
tar xjvf x264-snapshot-20121004-2245-stable.tar.bz2
cd x264-snapshot-20121004-2245-stable
./configure –enable-static –enable-pic –enable-shared
make
sudo make install

Download and install install ffmpeg. Latest from http://ffmpeg.org/download.html
cd ~/OpenCV
tar xzvf ffmpeg-1.0.tar.gz
cd ffmpeg-1.0
./configure –enable-gpl –enable-libfaac –enable-libmp3lame –enable-libopencore-amrnb –enable-libopencore-amrwb –enable-libtheora –enable-libvorbis –enable-libx264 –enable-libxvid –enable-nonfree –enable-postproc –enable-version3 –enable-x11grab –enable-pic –enable-shared
make
sudo make install

Download and install gtk libjpeg by entering the following command:
sudo apt-get install libgtk2.0-0 libgtk2.0-dev libjpeg62 libjpeg62-dev

Download and install install v4l (video for linux). Download v4l-utils-#.#.#.tar.bz2 from http://www.linuxtv.org/downloads/v4l-utils/
cd ~/OpenCV
tar xjvf v4l-utils-0.9.1.tar.bz2
cd v4l-utils-0.9.1
./configure
make
sudo make install

Time to get the OpenCV 2.4.1 source code:

1 cd ~
3 tar -xvf OpenCV-2.4.9.tar.bz2
4 cd OpenCV-2.4.1

Now we have to generate the Makefile by using cmake. In here we can define which parts of OpenCV we want to compile. Since we want to use Python, TBB, OpenGL, Qt, work with videos, etc, here is where we need to set that. Just execute the following line at the terminal to create the appropriate Makefile. Note that there are two dots at the end of the line, it is an argument for the cmake program and it means the parent directory (because we are inside the build directory, and we want to refer to the OpenCV directory, which is its parent).

1 mkdir build
2 cd build
3 cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..

Check that the above command produces no error and that in particular it reports FFMPEG as YES. If this is not the case you will not be able to read or write videos. Also, check that Python, TBB, OpenGL, V4L, OpenGL and Qt are detected.

If anything is wrong, go back, correct the errors by maybe installing extra packages and then run cmake again. You should see something similar to this:

Now, you are ready to compile and install OpenCV 2.4.9:

1 make
2 sudo make install

Now you have to configure OpenCV. First, open the opencv.conf file with the following code:

1 sudo gedit /etc/ld.so.conf.d/opencv.conf

Add the following line at the end of the file(it may be an empty file, that is ok) and then save it:

1 /usr/local/lib


Run the following code to configure the library:

1 sudo ldconfig

Now you have to open another file:

1 sudo gedit /etc/bash.bashrc

Add this to ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib:/home/LOCAL_USER_NAME/OpenCV/OpenCV-2.4.2/build/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export CLASSPATH=/usr/share/java/mysql.jar:/usr/include/mysql++:$CLASSPATH

Add these two lines at the end of the file and save it:

1 PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
2 export PKG_CONFIG_PATH

Finally, close the console and open a new one, restart the computer or logout and then login again. OpenCV will not work correctly until you do this.

Now you have OpenCV 2.4.9 installed in your computer with Python, TBB, OpenGL, video, and Qt support.

Check out the cool Qt interface which provides image viewing capabilities with zoom, as well as the ability to save the current image with just one click.

If you zoom in enough, you can see the RGB (or intensity) values for each pixel.

Now let’s build some samples included in OpenCV:

1 cd ~/OpenCV-2.4.9/samples/c
2 chmod +x build_all.sh
3 ./build_all.sh

Now we are ready to run the examples:

1 ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"--scale=1.5 lena.jpg

1 ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"--nested-cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_eye.xml" --scale=1.5 lena.jpg

1 ~/OpenCV-2.4.9/build/bin/grabcut ~/OpenCV-2.4.9/samples/cpp/lena.jpg

1 ~/OpenCV-2.4.9/build/bin/calibration_artificial

1 python ~/OpenCV-2.4.9/samples/python2/turing.py

Posted in Mixed | Leave a Comment »

OpenCV Installation in Windows¶

Posted by Hemprasad Badgujar on June 23, 2014

Installation in Windows

The description here was tested on Windows 7 SP1. Nevertheless, it should also work on any other relatively modern version of Windows OS. If you encounter errors after following the steps described below, feel free to contact us via our OpenCV Q&A forum. We’ll do our best to help you out.

Note

To use the OpenCV library you have two options: Installation by Using the Pre-built Libraries or Installation by Making Your Own Libraries from the Source Files. While the first one is easier to complete, it only works if you are coding with the latest Microsoft Visual Studio IDE and doesn’t take advantage of the most advanced technologies we integrate into our library.

Installation by Using the Pre-built Libraries

  1. Launch a web browser of choice and go to our page on Sourceforge.

  2. Choose a build you want to use and download it.

  3. Make sure you have admin rights. Unpack the self-extracting archive.

  4. You can check the installation at the chosen path as you can see below.

    An example of how the installation directory should look in case of successful install.

  5. To finalize the installation go to the Set the OpenCV enviroment variable and add it to the systems path section.

Installation by Making Your Own Libraries from the Source Files

You may find the content of this tutorial also inside the following videos: Part 1 and Part 2, hosted on YouTube.

 

Warning

These videos above are long-obsolete and contain inaccurate information. Be careful, since solutions described in those videos are no longer supported and may even break your install.

If you are building your own libraries you can take the source files from our Git repository.

Building the OpenCV library from scratch requires a couple of tools installed beforehand:

  • An IDE of choice (preferably), or just a CC++ compiler that will actually make the binary files. Here we will use the Microsoft Visual Studio. However, you can use any other IDE that has a valid CC++ compiler.
  • CMake, which is a neat tool to make the project files (for your chosen IDE) from the OpenCV source files. It will also allow an easy configuration of the OpenCV build files, in order to make binary files that fits exactly to your needs.
  • Git to acquire the OpenCV source files. A good tool for this is TortoiseGit. Alternatively, you can just download an archived version of the source files from our page on Sourceforge

OpenCV may come in multiple flavors. There is a “core” section that will work on its own. Nevertheless, there is a couple of tools, libraries made by 3rd parties that offer services of which the OpenCV may take advantage. These will improve its capabilities in many ways. In order to use any of them, you need to download and install them on your system.

  • The Python libraries are required to build the Python interface of OpenCV. For now use the version 2.7.x. This is also a must if you want to build the OpenCV documentation.
  • Numpy is a scientific computing package for Python. Required for the Python interface. i

            you want to install numpy plug-in, you can download 64 bit version                                                                    from http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy            It is also worth considering the Anaconda Python distribution. http://continuum.io/downloads            It bundles many packages, including NumPy and Matplotlib. I use it on Windows and it is easy to install and to maintain. The one downside, as of this writing, is that they haven’t uploaded a Windows build of NumPy 1.8. If you need some feature specific to NumPy 1.8, you can use the installer from the website you mentioned, i.e.

  • Intel © Threading Building Blocks (TBB) is used inside OpenCV for parallel code snippets. Using this will make sure that the OpenCV library will take advantage of all the cores you have in your systems CPU.

Introduction to TBB

Parallel computing in C++ is difficult because the language assumes a single thread model itself. That means C++ programmers have to deal with all the tedious work with multi-threading, are very easy to go wrong, and fall in bugs. Normally, not every programmer has to build a multi-threaded program from the scratch. In fact, one generally uses libraries to do so.

Low level libraries are raw thread libraries. Here one has to use the thread library to create and terminate a thread. A custom thread function must be written for the thread execution. POSIX pthread and Win32 thread are examples of raw thread libraries. (OS thread support can be considered as a library, because any API function of the OS is in a dynamic library.)

Higher level libraries abstract away the tricky thread from the programmer. Instead, these libraries allow programmers to focus on the work at hand that can be parallelized. For example, one can use a parallel_for to run a for loop when the loop does not have inter dependence across iterations, The thread library can automatically determine how many threads to create and how to schedule them, without user creating thread functions and threads. This only only makes the code concise, but also less error-prone and more efficient.

Intel TBB(Thread Building Blocks) and Microsoft PPL(Parallel Patterns Library) are two examples of such libraries in C++. Both of them uses C++ templates and run-time threading support. They are actually similar. I have not tried PPL, so this post is about TBB.


Using Open Source TBB

  • Download TBB
    • Go to TBB download page to download the open source binary releases. I choose Commercial Aligned Release, because this has the most stable releases. I downloaded tbb22_013oss, TBB 2.2 Update 3, specifically tbb22_013oss_win.zip for Windows. The release has the header files as well as the import library and DLL files prebuilt for Microsoft Visual C++ 8.0 and 9.0 on both x86(IA32) and x64(intel64). If you are aggressive and need the source code of TBB, you can try stable releases or development releases.
  • Install TBB
    • Extract the files in the zip file to a local directory, for example, C:\TBB. You should find tbb22_013oss under it. This is the installation directory, and doc, example, include etc should be directly under the installation folder.
    • Set a Windows environment variable TBB22_INSTALL_DIR to the above directory, e.g., C:\TBB\tbb22_013oss.
  • Develop with TBB
    • Add $(TBB22_INSTALL_DIR)\include to your C++ project’s additional include directories.
    • Add $(TBB22_INSTALL_DIR)\<arch>\<compiler>\lib (e.g., $(TBB22_INSTALL_DIR)\ia32\vc9\lib) to your project’s additional library directories.
    • Add to your project’s additional dependencies tbb.lib (Release) or tbb_debug.lib (Debug).
    • Write your C++ code to use TBB. See code below as an example.
  • Deploy with TBB
    • The TBB runtime is in TBB DLLs (tbb.dll/tbbmalloc.dll/tbbmalloc_proxy.dll for Release, tbb_debug.dll/tbbmalloc_debug.dll/tbbmalloc_proxy_debug.dll for Debug). They can be found in $(TBB22_INSTALL_DIR)\\\bin.
    • Your executable should have these DLLs in the same folder for execution.

 

  • Intel © Integrated Performance Primitives (IPP) may be used to improve the performance of color conversion, Haar training and DFT functions of the OpenCV library. Watch out, since this isn’t a free service.
  • OpenCV offers a somewhat fancier and more useful graphical user interface, than the default one by using the Qt framework. For a quick overview of what this has to offer look into the documentations highgui module, under the Qt New Functions section. Version 4.6 or later of the framework is required.
  • Eigen is a C++ template library for linear algebra.
  • The latest CUDA Toolkit will allow you to use the power lying inside your GPU. This will drastically improve performance for some algorithms (e.g the HOG descriptor). Getting more and more of our algorithms to work on the GPUs is a constant effort of the OpenCV team.
  • OpenEXR source files are required for the library to work with this high dynamic range (HDR) image file format.
  • The OpenNI Framework contains a set of open source APIs that provide support for natural interaction with devices via methods such as voice command recognition, hand gestures and body motion tracking.
  • Miktex is the best TEX implementation on the Windows OS. It is required to build the OpenCV documentation.
  • Sphinx is a python documentation generator and is the tool that will actually create the OpenCV documentation. This on its own requires a couple of tools installed, We will cover this in depth at the How to Install Sphinx section.

Now we will describe the steps to follow for a full build (using all the above frameworks, tools and libraries). If you do not need the support for some of these you can just freely skip this section.

Building the library

  1. Make sure you have a working IDE with a valid compiler. In case of the Microsoft Visual Studio just install it and make sure it starts up.

  2. Install CMake. Simply follow the wizard, no need to add it to the path. The default install options are OK.

  3. Download and install an up-to-date version of msysgit from its official site. There is also the portable version, which you need only to unpack to get access to the console version of Git. Supposing that for some of us it could be quite enough.

  4. Install TortoiseGit. Choose the 32 or 64 bit version according to the type of OS you work in. While installing, locate your msysgit (if it doesn’t do that automatically). Follow the wizard – the default options are OK for the most part.

  5. Choose a directory in your file system, where you will download the OpenCV libraries to. I recommend creating a new one that has short path and no special charachters in it, for example D:/OpenCV. For this tutorial I’ll suggest you do so. If you use your own path and know, what you’re doing – it’s OK.

    1. Clone the repository to the selected directory. After clicking Clone button, a window will appear where you can select from what repository you want to download source files (https://github.com/Itseez/opencv.git) and to what directory (D:/OpenCV).
    2. Push the OK button and be patient as the repository is quite a heavy download. It will take some time depending on your Internet connection.
  6. In this section I will cover installing the 3rd party libraries.

    1. Download the Python libraries and install it with the default options. You will need a couple other python extensions. Luckily installing all these may be automated by a nice tool called Setuptools. Download and install again.

    2. Installing Sphinx is easy once you have installed Setuptools. This contains a little application that will automatically connect to the python databases and download the latest version of many python scripts. Start up a command window (enter cmd into the windows start menu and press enter) and use the CD command to navigate to your Python folders Script sub-folder. Here just pass to the easy_install.exe as argument the name of the program you want to install. Add the sphinxargument.

      The Windows Command StartupHow to start the command window

      Note

      The CD navigation command works only inside a drive. For example if you are somewhere in the C: drive you cannot use it this to go to another drive (like for example D:). To do so you first need to change drives letters. For this simply enter the command D:. Then you can use the CD to navigate to specific folder inside the drive. Bonus tip: you can clear the screen by using the CLS command.

      This will also install its prerequisites Jinja2 and Pygments.

    3. The easiest way to install Numpy is to just download its binaries from the sourceforga page. Make sure your download and install exactly the binary for your python version (so for version 2.7).

    4. Download the Miktex and install it. Again just follow the wizard. At the fourth step make sure you select for the “Install missing packages on-the-fly” the Yesoption, as you can see on the image below. Again this will take quite some time so be patient.

      The Miktex Install Screen

    5. For the Intel © Threading Building Blocks (TBB) download the source files and extract it inside a directory on your system. For example let there beD:/OpenCV/dep. For installing the Intel © Integrated Performance Primitives (IPP) the story is the same. For exctracting the archives I recommend using the 7-Zip application.

      The Miktex Install Screen

    6. In case of the Eigen library it is again a case of download and extract to the D:/OpenCV/dep directory.

    7. Same as above with OpenEXR.

    8. For the OpenNI Framework you need to install both the development build and the PrimeSensor Module.

    9. For the CUDA you need again two modules: the latest CUDA Toolkit and the CUDA Tools SDK. Download and install both of them with a complete option by using the 32 or 64 bit setups according to your OS.

    10. In case of the Qt framework you need to build yourself the binary files (unless you use the Microsoft Visual Studio 2008 with 32 bit compiler). To do this go to theQt Downloads page. Download the source files (not the installers!!!):

      Download this Qt PackageExtract it into a nice and short named directory like D:/OpenCV/dep/qt/ . Then you need to build it. Start up a Visual Studio Command Prompt (2010) by using the start menu search (or navigate through the start menu All Programs ‣ Microsoft Visual Studio 2010 ‣ Visual Studio Tools ‣ Visual Studio Command Prompt (2010)).

      The Visual Studio command promptNow navigate to the extracted folder and enter inside it by using this console window. You should have a folder containing files like InstallMake and so on. Use the dir command to list files inside your current directory. Once arrived at this directory enter the following command:

      configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools
                    -no-qt3support -no-multimedia -no-ltcg
      

      Completing this will take around 10-20 minutes. Then enter the next command that will take a lot longer (can easily take even more than a full hour):

      nmake
      

      After this set the Qt enviroment variables using the following command on Windows 7:

      setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
      

      Also, add the built binary files path to the system path by using the Path Editor. In our case this is D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3/bin.

      Note

      If you plan on doing Qt application development you can also install at this point the Qt Visual Studio Add-in. After this you can make and build Qt applications without using the Qt Creator. Everything is nicely integrated into Visual Studio.

  7. Now start the CMake (cmake-gui). You may again enter it in the start menu search or get it from the All Programs ‣ CMake 2.8 ‣ CMake (cmake-gui). First, select the directory for the source files of the OpenCV library (1). Then, specify a directory where you will build the binary files for OpenCV (2).

    Select the directoriesPress the Configure button to specify the compiler (and IDE) you want to use. Note that in case you can choose between different compilers for making either 64 bit or 32 bit libraries. Select the one you use in your application development.

    How CMake should look at build time.CMake will start out and based on your system variables will try to automatically locate as many packages as possible. You can modify the packages to use for the build in the WITH ‣ WITH_X menu points (where X is the package abbreviation). Here are a list of current packages you can turn on or off:

    The packages OpenCV may useSelect all the packages you want to use and press again the Configure button. For an easier overview of the build options make sure the Grouped option under the binary directory selection is turned on. For some of the packages CMake may not find all of the required files or directories. In case of these CMake will throw an error in its output window (located at the bottom of the GUI) and set its field values, to not found constants. For example:

    Constant for not found packagesError (warning) thrown in output window of the CMake GUIFor these you need to manually set the queried directories or files path. After this press again the Configure button to see if the value entered by you was accepted or not. Do this until all entries are good and you cannot see errors in the field/value or the output part of the GUI. Now I want to emphasize an option that you will definitely love: ENABLE ‣ ENABLE_SOLUTION_FOLDERS. OpenCV will create many-many projects and turning this option will make sure that they are categorized inside directories in the Solution Explorer. It is a must have feature, if you ask me.

    Set the Solution Folders and the parts you want to buildFurthermore, you need to select what part of OpenCV you want to build.

    • BUILD_DOCS -> It creates two projects for building the documentation of OpenCV (there will be a separate project for building the HTML and the PDF files). Note that these aren’t built together with the solution. You need to make an explicit build project command on these to do so.
    • BUILD_EXAMPLES -> OpenCV comes with many example applications from which you may learn most of the libraries capabilities. This will also come handy to easily try out if OpenCV is fully functional on your computer.
    • BUILD_PACKAGE -> Prior to version 2.3 with this you could build a project that will build an OpenCV installer. With this you can easily install your OpenCV flavor on other systems. For the latest source files of OpenCV it generates a new project that simply creates zip archive with OpenCV sources.
    • BUILD_SHARED_LIBS -> With this you can control to build DLL files (when turned on) or static library files (*.lib) otherwise.
    • BUILD_TESTS -> Each module of OpenCV has a test project assigned to it. Building these test projects is also a good way to try out, that the modules work just as expected on your system too.
    • BUILD_PERF_TESTS -> There are also performance tests for many OpenCV functions. If you’re concerned about performance, build them and run.
    • BUILD_opencv_python -> Self-explanatory. Create the binaries to use OpenCV from the Python language.

    Press again the Configure button and ensure no errors are reported. If this is the case you can tell CMake to create the project files by pushing the Generate button. Go to the build directory and open the created OpenCV solution. Depending on just how much of the above options you have selected the solution may contain quite a lot of projects so be tolerant on the IDE at the startup. Now you need to build both the Release and the Debug binaries. Use the drop-down menu on your IDE to change to another of these after building for one of them.

    Look here for changing the Build TypeIn the end you can observe the built binary files inside the bin directory:

    The Result of the build.For the documentation you need to explicitly issue the build commands on the doc project for the PDF files and on the doc_html for the HTML ones. Each of these will call Sphinx to do all the hard work. You can find the generated documentation inside the Build/Doc/_html for the HTML pages and within the Build/Doc the PDF manuals.

    The Documentation ProjectsTo collect the header and the binary files, that you will use during your own projects, into a separate directory (simillary to how the pre-built binaries ship) you need to explicitely build the Install project.

    The Install ProjectThis will create an Install directory inside the Build one collecting all the built binaries into a single place. Use this only after you built both the Release and Debugversions.

    To test your build just go into the Build/bin/Debug or Build/bin/Release directory and start a couple of applications like the contours.exe. If they run, you are done. Otherwise, something definitely went awfully wrong. In this case you should contact us at our Q&A forum. If everything is okay the contours.exe output should resemble the following image (if built with Qt support):

    A good output result

    Note

    If you use the GPU module (CUDA libraries) make sure you also upgrade to the latest drivers of your GPU. Error messages containing invalid entries in (or cannot find) the nvcuda.dll are caused mostly by old video card drivers. For testing the GPU (if built) run the performance_gpu.exe sample application.

Set the OpenCV enviroment variable and add it to the systems path

First we set an enviroment variable to make easier our work. This will hold the build directory of our OpenCV library that we use in our projects. Start up a command window and enter:

setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc10     (suggested for Visual Studio 2010 - 32 bit Windows)
setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc10     (suggested for Visual Studio 2010 - 64 bit Windows)

setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc11     (suggested for Visual Studio 2012 - 32 bit Windows)
setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc11     (suggested for Visual Studio 2012 - 64 bit Windows)

Here the directory is where you have your OpenCV binaries (extracted or built). You can have different platform (e.g. x64 instead of x86) or compiler type, so substitute appropriate value. Inside this you should have two folders called lib and bin. The -m should be added if you wish to make the settings computer wise, instead of user wise.

If you built static libraries then you are done. Otherwise, you need to add the bin folders path to the systems path. This is cause you will use the OpenCV library in form of“Dynamic-link libraries” (also known as DLL). Inside these are stored all the algorithms and information the OpenCV library contains. The operating system will load them only on demand, during runtime. However, to do this he needs to know where they are. The systems PATH contains a list of folders where DLLs can be found. Add the OpenCV library path to this and the OS will know where to look if he ever needs the OpenCV binaries. Otherwise, you will need to copy the used DLLs right beside the applications executable file (exe) for the OS to find it, which is highly unpleasent if you work on many projects. To do this start up again the Path Editor and add the following new entry (right click in the application to bring up the menu):

%OPENCV_DIR%\bin

Right click to insert new path manually.Add the entry.Save it to the registry and you are done. If you ever change the location of your build directories or want to try out your applicaton with a different build all you will need to do is to update the OPENCV_DIR variable via the setx command inside a command window.

Now you can continue reading the tutorials with the How to build applications with OpenCV inside the Microsoft Visual Studio section. There you will find out how to use the OpenCV library in your own projects with the help of the Microsoft Visual Studio IDE.

Posted in Mixed | Leave a Comment »

CMake: Building with all your cores

Posted by Hemprasad Badgujar on June 20, 2014

CMake: Building with all your cores

As a distance runner, it is important to run using a fully engaged core. This allows for the most efficient means of moving towards my running goals. Software developers are equally motivated to use as much of their “cores” as possible to build software. OK, I admit this is a bit of a lame analogy, but I don’t think you would find too many developers that are not interested in building software as fast as possible using all of the horse power available on the hardware they are using. The CMake build system and its developers have always been aware of how important parallel builds are, and have made sure that CMake could take advantage of them when possible.

Since CMake is a Meta build tool that does not directly build software, but rather generates build files for other tools, the approaches to parallel building differ from generator to generator and platform to platform. In this blog, I will cover the approaches for parallel builds on the major platforms and tool chains supported by CMake.

First some terms:

  • Target Level Parallelism – This is when a build system builds high level targets at the same time. High level targets are things like libraries and executables.
  • Object Level Parallelism – This is when a build system builds individual object files at the same time. Basically, it invokes the compiler command line for independent objects at the same time.
  • CMake generator – A CMake generator is a target build tool for CMake. It is specified either in the cmake-gui or with the –G command line option to cmake.

I will start with Linux, followed by Apple OSX, and finish up with Windows.

Linux:

GNU Make

The traditional gmake tool which is usually installed as “make” on Linux systems can run parallel builds. It is used by CMake’s “Unix Makefiles” generator. To have parallel builds with gmake, you need to run gmake with the –jN command line option. The flag tells make to build in parallel. The N argument is used to specify how many jobs are run in parallel during the build. For minimum build times, you want to use a value of N that is one more than the number of cores on the machine.  So, if you have a quad core Linux machine, you would run make –j5.  Here is an example:

# assume your source code is in a directory called src and you are one directory up from there

mkdir build

cd  build

cmake –G”Unix Makefiles” ../src

make –j5

 

ninja

Some developers at Google recently created a new build tool called ninja. This is a replacement for the GNU make tool. ninja was created to run faster than make and of course run parallel builds very well. Fortunately, CMake now has a ninja generator so that your project can take advantage of this new tool. Unfortunately, if you are using CMake to build Fortran 95 or greater code that makes used of Fortran modules you will have to stick to GNU make.  The ninja support for Fortran depend information is not yet implemented in CMake. (if you are interested in this, please send me an email). If your project does not include Fortran code, then ninja might be a good tool for you to try. ninja is very quick to figure out that it has nothing to do which is important for incremental builds of large projects.

To use ninja you will need to first build ninja from source. The source for ninja can be found here: git://github.com/martine/ninja.git. You will need python and a c++ compiler to build ninja. There is a README in the top of the ninja source tree that explains how to build it. Basically, you just run python bootstrap.py. This will produce a ninja executable. Once it is built, you will need to put ninja in your PATH so CMake can find it.

ninja does not require a –j flag like GNU make to perform a parallel build. It defaults to building cores +2 jobs at once (thanks toMatthew Woehlke for pointing out that it is not simply 10 as I had originally stated.).  It does however accept a –j flag with the same syntax as GNU make, -j N where N is the number of jobs run in parallel. For more information run ninja –help with the ninja you have built.

Once you have ninja built and installed in your PATH, you are ready to run cmake.  Here is an example:

# assume your source code is in a directory called src and you are one directory up from there

mkdir build

cd  build

cmake –GNinja ../src

ninja

 

Mac OSX

Mac OSX is almost the same as Linux and both GNU make and ninja can be used by following the instructions in the Linux section. Apple also provides an IDE build tool called Xcode. Xcode build performs parallel builds by default. To use Xcode, you will obviously have to have Xcode installed. You run cmake with the Xcode generator.  Here is an example:

# assume your source code is in a directory called src and you are one directory up from there

mkdir build

cd  build

cmake –GXcode ../src

# start Xcode IDE and load the project CMake creates, and build from the IDE

# or you can build from the command line like this:

cmake -–build . –config Debug

 

Note, cmake –build can be used for any of the CMake generators, but is particularly useful when building IDE based generators from the command line.  You can add options like -j to cmake –build by putting them after the — option on the command line.  For example, cmake –build . –config Debug — -j8 will pass -j8 to the make command

Windows:

The Windows platform actually has the greatest diversity of build options. You can use the Visual Studio IDE, nmake, GNU make, jom, MinGW GNU make, cygwin’s GNU Make, or ninja. Each of the options has some merit. It depends on how you develop code and which tools you have installed to decide which tool best fits your needs.

Visual Studio IDE

This is a very popular IDE developed by Microsoft. With no extra options the IDE will perform target level parallelism during the build. This works well if you have many targets of about the same size that do not depend on each other. However, most projects are not constructed in that maner. They are more likely to have many dependencies that will only allow for minimal parallelism. However, it is not time to give up on the IDE. You can tell it to use object file level parallelism by adding an extra flag to the compile line.

The flag is the /MP flag which has the following help: “/MP[N] use up to ‘n’ processes for compilation”.  The N is optional as /MP without an n will use as many cores as it sees on the machine.  This flag must be set at CMake configure time instead of build time like the –j flag of make. To set the flag you will have to edit the CMake cache with the cmake-gui and add it to the CMAKE_CXX_FLAGS and the CMAKE_C_FLAGS.  The downside is that the IDE will still perform target level parallelism along with object level parallelism which can lead to excessive parallelism grinding your machine and GUI to a halt. It has also been known to randomly create bad object files. However, the speed up is significant so it is usually worth the extra trouble it causes.

GNU Make on Windows

Using GNU Make on Windows is similar to using it on Linux or the Mac. However, there are several flavors of GNU make that can be found for Windows. Since I am talking about achieving maximum parallelism, you need to make sure that the make you are using supports the job-server. The makefiles that CMake generates are recursive in implementationhttp://www.cmake.org/Wiki/CMake_FAQ#Why_does_CMake_generate_recursive_Makefiles.3F. This means that there will be more than one make process will be running during the build. The job-server code in gmake allows these different processes to communicate with each other in order to figure out how many jobs to start in parallel.

The original port of GNU make to Windows did not have a job-server implementation. This meant that the –j option was basically ignored by windows GNU make when recursive makefiles were used. The only option was to use the Cygwin version of make. However, at some point the Cygwin make stopped supporting C:/ paths which meant that it could not be used to run the Microsoft compiler. I have a patched version of Cygwin’s make that can be found here:  (www.cmake.org/files/cygwin/make.exe )

Recently, someone implemented the job-server on Windows gmake as seen on this mailing list post:

http://mingw-users.1079350.n2.nabble.com/Updated-mingw32-make-3-82-90-cvs-20120823-td7578803.html

This means that a sufficiently new version of MinGW gmake will have the job server code and will build in parallel with CMake makefiles.

To build with gmake on windows, you will first want to make sure the make you are using has job-server support. Once you have done that, the instructions are pretty much the same as on Linux.  You will of course have to run cmake from a shell that has the correct environment for the Microsoft command line cl compiler to run. To get that environment you can run the Visual Studio command prompt. That command prompt basically sets a bunch of environment variables that let the compiler find system include files and libraries. Without the correct environment CMake will fail when it tests the compiler.

There are three CMake generators supporting three different flavors of GNU make on windows. They are MSYS Makefiles, Unix Makefiles and MinGW Makefiles. MSYS is setup to find the MSYS tool chain and not the MS compiler. MinGW finds the MinGW toolchain. Unix Makefiles will use the CC and CXX environment variables to find the compiler which you can set to cl for the MS compiler.

If you are using the Visual Studio cl compiler and want to use gmake, the two options are the “Unix Makefiles” or the “MinGW Makefiles” generators with either the patched Cygwin gmake, or a MinGW make new enough to have the job-server support. The MSYS generator will not work with the MS compiler because of path translation issues done by the shell. Once you have the environment setup for the compiler and the correct GNU make installed, you can follow the instructions found in the Linux section basically cmake, make –jN.

JOM

The legacy command line make tool that comes with Visual Studio is called nmake. nmake is a makefile processor like GNU make with a slight different syntax. However, it does not know how to do parallel builds. If the makefiles are setup to run cl with more than one source file at a time, the /MP flag can be used to run parallel builds with nmake. CMake does not create nmake makefiles that can benefit from /MP. Fortunately, Joerg Bornemann a Qt developer created the jom tool.

jom is a drop in replacement for nmake and is able to read and process nmake makefiles created by CMake. jom will perform object level parallelism, and is a good option for speeding up the builds on Windows. Jom can be downloaded in binary form from here: http://releases.qt-project.org/jom. There is a jom specific generator called “NMake Makefiles JOM”. Here is an example (assumes jom is in the PATH):

# assume your source code is in a directory called src and you are one directory up from there

mkdir build

cd  build

cmake –G” NMake Makefiles JOM” ../src

jom

 

ninja

ninja is used on Windows pretty much the same way it is used on Linux or OSX. You still have to build it which will require installing python. To obtain and build ninja see the Linux section on ninja. You will also need to make sure that you have the VS compiler environment setup correctly. Once you have ninja.exe in your PATH and cl ready to be used from your shell, you can run the CMake Ninja generator. Here is an example:

# assume your source code is in a directory called src and you are one directory up from there

mkdir build

cd  build

cmake –GNinja ../src

ninja

 

Conclusion

It is possible although not entirely obvious especially on Windows to build with all the cores of your computer. Multiprocessing is obviously here to stay, and performance gains will be greater if parallel builds are taken advantage as the number of core available increases. My laptop has 4 real cores and 4 more with hyperthreading with a total of 8 cores. Recently, I have been using ninja with good results as I mostly use emacs and the visual studio compiler from the command line. Prior to ninja I used the Cygwin version of gmake.  I would be interested to hear what other people are using and if you have performance tests of the various forms of build parallelism available.

Posted in Mixed | Tagged: , , , , , | Leave a Comment »

OpenCV with CUDA Installation and Setup in Windows

Posted by Hemprasad Badgujar on June 20, 2014

Installation in Windows

The description here was tested on Windows 7 SP1. Nevertheless, it should also work on any other relatively modern version of Windows OS. If you encounter errors after following the steps described below, feel free to contact us via our OpenCV Q&A forum. We’ll do our best to help you out.

Note

To use the OpenCV library you have two options: Installation by Using the Pre-built Libraries or Installation by Making Your Own Libraries from the Source Files. While the first one is easier to complete, it only works if you are coding with the latest Microsoft Visual Studio IDE and doesn’t take advantage of the most advanced technologies we integrate into our library.

Installation by Using the Pre-built Libraries

  1. Launch a web browser of choice and go to our page on Sourceforge.

  2. Choose a build you want to use and download it.

  3. Make sure you have admin rights. Unpack the self-extracting archive.

  4. You can check the installation at the chosen path as you can see below.

    An example of how the installation directory should look in case of successful install.

  5. To finalize the installation go to the Set the OpenCV enviroment variable and add it to the systems path section.

Installation by Making Your Own Libraries from the Source Files

You may find the content of this tutorial also inside the following videos: Part 1 and Part 2, hosted on YouTube.

 

Warning

These videos above are long-obsolete and contain inaccurate information. Be careful, since solutions described in those videos are no longer supported and may even break your install.

If you are building your own libraries you can take the source files from our Git repository.

Building the OpenCV library from scratch requires a couple of tools installed beforehand:

  • An IDE of choice (preferably), or just a CC++ compiler that will actually make the binary files. Here we will use the Microsoft Visual Studio. However, you can use any other IDE that has a valid CC++ compiler.
  • CMake, which is a neat tool to make the project files (for your chosen IDE) from the OpenCV source files. It will also allow an easy configuration of the OpenCV build files, in order to make binary files that fits exactly to your needs.
  • Git to acquire the OpenCV source files. A good tool for this is TortoiseGit. Alternatively, you can just download an archived version of the source files from our page on Sourceforge

OpenCV may come in multiple flavors. There is a “core” section that will work on its own. Nevertheless, there is a couple of tools, libraries made by 3rd parties that offer services of which the OpenCV may take advantage. These will improve its capabilities in many ways. In order to use any of them, you need to download and install them on your system.

  • The Python libraries are required to build the Python interface of OpenCV. For now use the version 2.7.x. This is also a must if you want to build the OpenCV documentation.

    Python Download and install the scientific-oriented Python Distribution Python(x,y):

    http://ftp.ntua.gr/pub/devel/pythonxy/

    This distribution contains the MinGW compiler toolchain, which will be used by Cmake and Eclipse.

    Download and install the OpenCV plugin update as well:

    http://pythonxy.googlecode.com/files/
    Or

    Windows: Install Python and Sphinx

    Install Python

    Most Windows users do not have Python, so we begin with the installation of Python itself. If you have already installed Python, please skip this section.

    Go to http://python.org, the main download site for Python. Look at the left sidebar and under “Quick Links”, click “Windows Installer” to download.

    _images/pythonorg.png

    Note

    Currently, Python offers two major versions, 2.x and 3.x. Sphinx 1.3 can run under Python 2.6, 2.7, 3.2, 3.3, with the recommended version being 2.7. This chapter assumes you have installed Python 2.7.

    Follow the Windows installer for Python.

    _images/installpython.jpgAfter installation, you better add the Python executable directories to the environment variable PATH in order to run Python and package commands such as sphinx-build easily from the Command Prompt.

    • Right-click the “My Computer” icon and choose “Properties”

    • Click the “Environment Variables” button under the “Advanced” tab

    • If “Path” (or “PATH”) is already an entry in the “System variables” list, edit it. If it is not present, add a new variable called “PATH”.

    • Add these paths, separating entries by ”;”:

      • C:\Python27 – this folder contains the main Python executable
      • C:\Python27\Scripts – this folder will contain executables added by Python packages installed with easy_install (see below)

      This is for Python 2.7. If you use another version of Python or installed to a non-default location, change the digits “27” accordingly.

    • Now run the Command Prompt. After command prompt window appear, type python and Enter. If the Python installation was successful, the installed Python version is printed, and you are greeted by the prompt >>>. TypeCtrl+Z and Enter to quit.

    Install the easy_install command

    Python has a very useful easy_install command which can download and install 3rd-party libraries with a single command. This is provided by the “setuptools” project: https://pypi.python.org/pypi/setuptools.

    To install setuptools, download https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py and save it somewhere. After download, invoke the command prompt, go to the directory with ez_setup.py and run this command:

    C:\> python ez_setup.py
    

    Now setuptools and its easy_install command is installed. From there we can go to the Sphinx install.

    Installing Sphinx with easy_install

    If you finished the installation of setuptools, type this line in the command prompt:

    C:\> easy_install sphinx
    

    After installation, type sphinx-build on the command prompt. If everything worked fine, you will get a Sphinx version number and a list of options for this command.

  • Numpy is a scientific computing package for Python. Required for the Python interface.

Try the (unofficial) binaries in this site: http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
You can get numpy 1.6.2 x64 with or without Intel MKL libs to Python 2.7

I suggest WinPython, a Python 2.7 distribution for Windows with both 32- and 64-bit versions.

It is also worth considering the Anaconda Python distribution. http://continuum.io/downloads

  • Intel © Threading Building Blocks (TBB) is used inside OpenCV for parallel code snippets. Using this will make sure that the OpenCV library will take advantage of all the cores you have in your systems CPU.

Introduction to TBB

Parallel computing in C++ is difficult because the language assumes a single thread model itself. That means C++ programmers have to deal with all the tedious work with multi-threading, are very easy to go wrong, and fall in bugs. Normally, not every programmer has to build a multi-threaded program from the scratch. In fact, one generally uses libraries to do so.

Low level libraries are raw thread libraries. Here one has to use the thread library to create and terminate a thread. A custom thread function must be written for the thread execution. POSIX pthread and Win32 thread are examples of raw thread libraries. (OS thread support can be considered as a library, because any API function of the OS is in a dynamic library.)

Higher level libraries abstract away the tricky thread from the programmer. Instead, these libraries allow programmers to focus on the work at hand that can be parallelized. For example, one can use a parallel_for to run a for loop when the loop does not have inter dependence across iterations, The thread library can automatically determine how many threads to create and how to schedule them, without user creating thread functions and threads. This only only makes the code concise, but also less error-prone and more efficient.

Intel TBB(Thread Building Blocks) and Microsoft PPL(Parallel Patterns Library) are two examples of such libraries in C++. Both of them uses C++ templates and run-time threading support. They are actually similar. I have not tried PPL, so this post is about TBB.


Using Open Source TBB

  • Download TBB
    • Go to TBB download page to download the open source binary releases. I choose Commercial Aligned Release, because this has the most stable releases. I downloaded tbb22_013oss, TBB 2.2 Update 3, specifically tbb22_013oss_win.zip for Windows. The release has the header files as well as the import library and DLL files prebuilt for Microsoft Visual C++ 8.0 and 9.0 on both x86(IA32) and x64(intel64). If you are aggressive and need the source code of TBB, you can try stable releases or development releases.
  • Install TBB
    • Extract the files in the zip file to a local directory, for example, C:\TBB. You should find tbb22_013oss under it. This is the installation directory, and doc, example, include etc should be directly under the installation folder.
    • Set a Windows environment variable TBB22_INSTALL_DIR to the above directory, e.g., C:\TBB\tbb22_013oss.
  • Develop with TBB
    • Add $(TBB22_INSTALL_DIR)\include to your C++ project’s additional include directories.
    • Add $(TBB22_INSTALL_DIR)\<arch>\<compiler>\lib (e.g., $(TBB22_INSTALL_DIR)\ia32\vc9\lib) to your project’s additional library directories.
    • Add to your project’s additional dependencies tbb.lib (Release) or tbb_debug.lib (Debug).
    • Write your C++ code to use TBB. See code below as an example.
  • Deploy with TBB
    • The TBB runtime is in TBB DLLs (tbb.dll/tbbmalloc.dll/tbbmalloc_proxy.dll for Release, tbb_debug.dll/tbbmalloc_debug.dll/tbbmalloc_proxy_debug.dll for Debug). They can be found in $(TBB22_INSTALL_DIR)\\\bin.
    • Your executable should have these DLLs in the same folder for execution.
  • Intel © Integrated Performance Primitives (IPP) may be used to improve the performance of color conversion, Haar training and DFT functions of the OpenCV library. Watch out, since this isn’t a free service.
  • OpenCV offers a somewhat fancier and more useful graphical user interface, than the default one by using the Qt framework. For a quick overview of what this has to offer look into the documentations highgui module, under the Qt New Functions section. Version 4.6 or later of the framework is required.

Download the Qt library source: http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.2.zip

Extract it into a directory like C:\Qt

Open a shell, cd to the directory containing the extracted Qt files and enter the following command:

configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools
              -no-qt3support -no-multimedia -no-ltcg

This will take around 10 minutes. Then enter the next command that will take a lot longer (can easily take even more than a full hour):

make

Create a system environment variable QTDIR : C:\Qt\qt-everywhere-opensource-src-4.8.2

Add %QTDIR%\bin at the front of the system PATH.

JRE Java run time environment is needed for Eclipse to work.

Download and install it:

http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1637588.html

  • The latest CUDA Toolkit will allow you to use the power lying inside your GPU. This will drastically improve performance for some algorithms (e.g the HOG descriptor). Getting more and more of our algorithms to work on the GPUs is a constant effort of the OpenCV team.
  • OpenEXR source files are required for the library to work with this high dynamic range (HDR) image file format.
  • The OpenNI Framework contains a set of open source APIs that provide support for natural interaction with devices via methods such as voice command recognition, hand gestures and body motion tracking.
  • Miktex is the best TEX implementation on the Windows OS. It is required to build the OpenCV documentation.
  • Sphinx is a python documentation generator and is the tool that will actually create the OpenCV documentation. This on its own requires a couple of tools installed, We will cover this in depth at the How to Install Sphinx section.

Now we will describe the steps to follow for a full build (using all the above frameworks, tools and libraries). If you do not need the support for some of these you can just freely skip this section.

Building the library

  1. Make sure you have a working IDE with a valid compiler. In case of the Microsoft Visual Studio just install it and make sure it starts up.

  2. Install CMake. Simply follow the wizard, no need to add it to the path. The default install options are OK.

  3. Download and install an up-to-date version of msysgit from its official site. There is also the portable version, which you need only to unpack to get access to the console version of Git. Supposing that for some of us it could be quite enough.

  4. Install TortoiseGit. Choose the 32 or 64 bit version according to the type of OS you work in. While installing, locate your msysgit (if it doesn’t do that automatically). Follow the wizard – the default options are OK for the most part.

  5. Choose a directory in your file system, where you will download the OpenCV libraries to. I recommend creating a new one that has short path and no special charachters in it, for example D:/OpenCV. For this tutorial I’ll suggest you do so. If you use your own path and know, what you’re doing – it’s OK.

    1. Clone the repository to the selected directory. After clicking Clone button, a window will appear where you can select from what repository you want to download source files (https://github.com/Itseez/opencv.git) and to what directory (D:/OpenCV).
    2. Push the OK button and be patient as the repository is quite a heavy download. It will take some time depending on your Internet connection.
  6. In this section I will cover installing the 3rd party libraries.

    1. Download the Python libraries and install it with the default options. You will need a couple other python extensions. Luckily installing all these may be automated by a nice tool called Setuptools. Download and install again.

    2. Installing Sphinx is easy once you have installed Setuptools. This contains a little application that will automatically connect to the python databases and download the latest version of many python scripts. Start up a command window (enter cmd into the windows start menu and press enter) and use the CD command to navigate to your Python folders Script sub-folder. Here just pass to the easy_install.exe as argument the name of the program you want to install. Add the sphinxargument.

      The Windows Command StartupHow to start the command window

      Note

      The CD navigation command works only inside a drive. For example if you are somewhere in the C: drive you cannot use it this to go to another drive (like for example D:). To do so you first need to change drives letters. For this simply enter the command D:. Then you can use the CD to navigate to specific folder inside the drive. Bonus tip: you can clear the screen by using the CLS command.

      This will also install its prerequisites Jinja2 and Pygments.

    3. The easiest way to install Numpy is to just download its binaries from the sourceforga page. Make sure your download and install exactly the binary for your python version (so for version 2.7).

    4. Download the Miktex and install it. Again just follow the wizard. At the fourth step make sure you select for the “Install missing packages on-the-fly” the Yesoption, as you can see on the image below. Again this will take quite some time so be patient.

      The Miktex Install Screen

    5. For the Intel © Threading Building Blocks (TBB) download the source files and extract it inside a directory on your system. For example let there beD:/OpenCV/dep. For installing the Intel © Integrated Performance Primitives (IPP) the story is the same. For exctracting the archives I recommend using the 7-Zip application.

      The Miktex Install Screen

    6. In case of the Eigen library it is again a case of download and extract to the D:/OpenCV/dep directory.

    7. Same as above with OpenEXR.

    8. For the OpenNI Framework you need to install both the development build and the PrimeSensor Module.

    9. For the CUDA you need again two modules: the latest CUDA Toolkit and the CUDA Tools SDK. Download and install both of them with a complete option by using the 32 or 64 bit setups according to your OS.

    10. In case of the Qt framework you need to build yourself the binary files (unless you use the Microsoft Visual Studio 2008 with 32 bit compiler). To do this go to theQt Downloads page. Download the source files (not the installers!!!):

      Download this Qt Package

      Compiling Qt 5 with Visual Studio 2012 (32 or 64 bit)

      Steps to do:
      1. Decide whether to compile 32bit or 64bit. If you’ll go with 32bit choose the following 32bit tools (the same with 64bit).
      2. Install Python http://www.python.org/getit
      3. Install Perl http://strawberryperl.com
      4. Download Jom http://qt-project.org/wiki/jom
      5. Download and extract Qt sources http://qt-project.org/downloads Search for the zip file: 6. Copy Jom files to the Qt sources directory.7. Restart computer.
      8. Make sure Python and Perl are accessible from command line:

      • python –version
      • perl -v

      9. Open Visual Studio 2012 tools command prompt. It can be found here: Start ->  Microsoft Visual Studio 2012:
      For 32 bit use VS2012 x86 Native Tools Command Prompt
      For 64 bit use VS2012 x64 Cross Tools Command Prompt
      10. Navigate to the Qt source directory and type:
      configure -developer-build -opensource -opengl desktop -nomake examples -nomake tests
      11. Type:
      jom
      12. Wait until the compilation is finished. It will take about 30-60 minutes.
      13. Once compiled do some cleanup. Following command will remove temporary files:
      jom clean

      Step 1: The Setup

      1. Download and install RapidEE here. RapidEE is a windows environment variables editor. It is extremely useful for the rest of this process (and just in general).
      2. Install the DirectX 11 SDK. It is now part of the Windows 8 SDK, so you first have to install the DirectX 10 SDK, which you can get here (but see warning in next sentence). If you have the Visual C++ 2010 Redistributable Package installed, and you probably do (it is automatically installed along with VS 2010), follow the steps outlined here to assist with the DirectX 10 installation. Once you have the DirectX 10 SDK installed, download and install the Windows 8 SDK here, which contains the DirectX 11 SDK. Yes, this is a pain, but unless you know you have the DirectX 11 SDK, the Qt build will fail.
      3. Install Python for Windows (I’ve heard 2.6+, working with 3.3) from Python.org
      4. Install Perl for Windows from ActiveState

      Extract it into a nice and short named directory like D:/OpenCV/dep/qt/ . Then you need to build it. Start up a Visual Studio Command Prompt (2010) by using the start menu search (or navigate through the start menu All Programs ‣ Microsoft Visual Studio 2010 ‣ Visual Studio Tools ‣ Visual Studio Command Prompt (2010)).The Visual Studio command prompt

    11. Now navigate to the extracted folder and enter inside it by using this console window. You should have a folder containing files like InstallMake and so on. Use the dir command to list fil
      l[-inside your current directory. Once arrived at this directory enter the following command:

      configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-qt3support -no-multimedia -no-ltcg
      

      configure -release -developer-build -opensource -opengl desktop -nomake examples -nomake tests

      Completing this will take around 10-20 minutes. Then enter the next command that will take a lot longer (can easily take even more than a full hour):
      nmake
      

      After this set the Qt enviroment variables using the following command on Windows 7:

      setx -m QTDIR D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3
      

      Also, add the built binary files path to the system path by using the Path Editor. In our case this is D:/OpenCV/dep/qt/qt-everywhere-opensource-src-4.7.3/bin.

      Note

      If you plan on doing Qt application development you can also install at this point the Qt Visual Studio Add-in. After this you can make and build Qt applications without using the Qt Creator. Everything is nicely integrated into Visual Studio.

  7. Now start the CMake (cmake-gui). You may again enter it in the start menu search or get it from the All Programs ‣ CMake 2.8 ‣ CMake (cmake-gui). First, select the directory for the source files of the OpenCV library (1). Then, specify a directory where you will build the binary files for OpenCV (2).

    Select the directoriesPress the Configure button to specify the compiler (and IDE) you want to use. Note that in case you can choose between different compilers for making either 64 bit or 32 bit libraries. Select the one you use in your application development.

    How CMake should look at build time.CMake will start out and based on your system variables will try to automatically locate as many packages as possible. You can modify the packages to use for the build in the WITH ‣ WITH_X menu points (where X is the package abbreviation). Here are a list of current packages you can turn on or off:

    The packages OpenCV may useSelect all the packages you want to use and press again the Configure button. For an easier overview of the build options make sure the Grouped option under the binary directory selection is turned on. For some of the packages CMake may not find all of the required files or directories. In case of these CMake will throw an error in its output window (located at the bottom of the GUI) and set its field values, to not found constants. For example:

    Constant for not found packagesError (warning) thrown in output window of the CMake GUIFor these you need to manually set the queried directories or files path. After this press again the Configure button to see if the value entered by you was accepted or not. Do this until all entries are good and you cannot see errors in the field/value or the output part of the GUI. Now I want to emphasize an option that you will definitely love: ENABLE ‣ ENABLE_SOLUTION_FOLDERS. OpenCV will create many-many projects and turning this option will make sure that they are categorized inside directories in the Solution Explorer. It is a must have feature, if you ask me.

    Set the Solution Folders and the parts you want to buildFurthermore, you need to select what part of OpenCV you want to build.

    • BUILD_DOCS -> It creates two projects for building the documentation of OpenCV (there will be a separate project for building the HTML and the PDF files). Note that these aren’t built together with the solution. You need to make an explicit build project command on these to do so.
    • BUILD_EXAMPLES -> OpenCV comes with many example applications from which you may learn most of the libraries capabilities. This will also come handy to easily try out if OpenCV is fully functional on your computer.
    • BUILD_PACKAGE -> Prior to version 2.3 with this you could build a project that will build an OpenCV installer. With this you can easily install your OpenCV flavor on other systems. For the latest source files of OpenCV it generates a new project that simply creates zip archive with OpenCV sources.
    • BUILD_SHARED_LIBS -> With this you can control to build DLL files (when turned on) or static library files (*.lib) otherwise.
    • BUILD_TESTS -> Each module of OpenCV has a test project assigned to it. Building these test projects is also a good way to try out, that the modules work just as expected on your system too.
    • BUILD_PERF_TESTS -> There are also performance tests for many OpenCV functions. If you’re concerned about performance, build them and run.
    • BUILD_opencv_python -> Self-explanatory. Create the binaries to useOpenCV from the Python language.While building VTK6.1 with Qt5.2.1 (MSVC2012_64_opengl prebuilt binary) using MSVC2012_x64 on Windows 8.1, I got the following error message:
      CMake Error at C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:16 (message):
      Failed to find “glu32″ in “” with CMAKE_CXX_LIBRARY_ARCHITECTURE “”.
      Call Stack (most recent call first):
      C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:52 (_qt5gui_find_extra_libs)
      C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:152 (include)
      C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:94 (find_package)
      GUISupport/Qt/CMakeLists.txt:58 (find_package)

       

      I checked VTK_GROUP_QT, Module_vtkGUISupportQt, Module_vtkGUISupportQtOpenGL, and set QT version to 5. CMake found the following three DIR’s:
       
      Qt5Core_DIR = C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Core
      Qt5Gui_DIR = C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui
      Qt5Widgets_DIR = C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Widgets
      My problems was solved. On CMake, I added this entry:
      CMAKE_PREFIX_PATH: C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64
      for my Windows 8.1 x64 version.

      File:Cmake-add-cache-entry-arrow.png

    Press again the Configure button and ensure no errors are reported. If this is the case you can tell CMake to create the project files by pushing the Generate button. Go to the build directory and open the created OpenCV solution. Depending on just how much of the above options you have selected the solution may contain quite a lot of projects so be tolerant on the IDE at the startup. Now you need to build both the Release and the Debug binaries. Use the drop-down menu on your IDE to change to another of these after building for one of them.

    Look here for changing the Build TypeIn the end you can observe the built binary files inside the bin directory:

    The Result of the build.For the documentation you need to explicitly issue the build commands on the doc project for the PDF files and on the doc_html for the HTML ones. Each of these will call Sphinx to do all the hard work. You can find the generated documentation inside the Build/Doc/_html for the HTML pages and within the Build/Doc the PDF manuals.

    The Documentation ProjectsTo collect the header and the binary files, that you will use during your own projects, into a separate directory (simillary to how the pre-built binaries ship) you need to explicitely build the Install project.

    The Install ProjectThis will create an Install directory inside the Build one collecting all the built binaries into a single place. Use this only after you built both the Release and Debugversions.

    To test your build just go into the Build/bin/Debug or Build/bin/Release directory and start a couple of applications like the contours.exe. If they run, you are done. Otherwise, something definitely went awfully wrong. In this case you should contact us at our Q&A forum. If everything is okay the contours.exe output should resemble the following image (if built with Qt support):

    A good output result

    Note

    If you use the GPU module (CUDA libraries) make sure you also upgrade to the latest drivers of your GPU. Error messages containing invalid entries in (or cannot find) the nvcuda.dll are caused mostly by old video card drivers. For testing the GPU (if built) run the performance_gpu.exe sample application.

Set the OpenCV enviroment variable and add it to the systems path

First we set an enviroment variable to make easier our work. This will hold the build directory of our OpenCV library that we use in our projects. Start up a command window and enter:

setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc10     (suggested for Visual Studio 2010 - 32 bit Windows)
setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc10     (suggested for Visual Studio 2010 - 64 bit Windows)

setx -m OPENCV_DIR D:\OpenCV\Build\x86\vc11     (suggested for Visual Studio 2012 - 32 bit Windows)
setx -m OPENCV_DIR D:\OpenCV\Build\x64\vc11     (suggested for Visual Studio 2012 - 64 bit Windows)

Here the directory is where you have your OpenCV binaries (extracted or built). You can have different platform (e.g. x64 instead of x86) or compiler type, so substitute appropriate value. Inside this you should have two folders called lib and bin. The -m should be added if you wish to make the settings computer wise, instead of user wise.

If you built static libraries then you are done. Otherwise, you need to add the bin folders path to the systems path. This is cause you will use the OpenCV library in form of“Dynamic-link libraries” (also known as DLL). Inside these are stored all the algorithms and information the OpenCV library contains. The operating system will load them only on demand, during runtime. However, to do this he needs to know where they are. The systems PATH contains a list of folders where DLLs can be found. Add the OpenCV library path to this and the OS will know where to look if he ever needs the OpenCV binaries. Otherwise, you will need to copy the used DLLs right beside the applications executable file (exe) for the OS to find it, which is highly unpleasent if you work on many projects. To do this start up again the Path Editor and add the following new entry (right click in the application to bring up the menu):

%OPENCV_DIR%\bin

Right click to insert new path manually.Add the entry.Save it to the registry and you are done. If you ever change the location of your build directories or want to try out your applicaton with a different build all you will need to do is to update the OPENCV_DIR variable via the setx command inside a command window.

build applications with OpenCV inside the Microsoft Visual Studio

Everything I describe here will apply to the C\C++ interface of OpenCV. I start out from the assumption that you have read and completed with success the Installation in Windows tutorial. Therefore, before you go any further make sure you have an OpenCV directory that contains the OpenCV header files plus binaries and you have set the environment variables as described here.

You should have a folder looking like this.

The OpenCV libraries, distributed by us, on the Microsoft Windows operating system are in a Dynamic Linked Libraries (DLL). These have the advantage that all the content of the library are loaded only at runtime, on demand, and that countless programs may use the same library file. This means that if you have ten applications using the OpenCV library, no need to have around a version for each one of them. Of course you need to have the dll of the OpenCV on all systems where you want to run your application.

Another approach is to use static libraries that have lib extensions. You may build these by using our source files as described in the Installation in Windows tutorial. When you use this the library will be built-in inside your exe file. So there is no chance that the user deletes them, for some reason. As a drawback your application will be larger one and as, it will take more time to load it during its startup.

To build an application with OpenCV you need to do two things:

  • Tell to the compiler how the OpenCV library looks. You do this by showing it the header files.

  • Tell to the linker from where to get the functions or data structures of OpenCV, when they are needed.

    If you use the lib system you must set the path where the library files are and specify in which one of them to look. During the build the linker will look into these libraries and add the definitions and implementation of all used functions and data structures to the executable file.

    If you use the DLL system you must again specify all this, however now for a different reason. This is a Microsoft OS specific stuff. It seems that the linker needs to know that where in the DLL to search for the data structure or function at the runtime. This information is stored inside lib files. Nevertheless, they aren’t static libraries. They are so called import libraries. This is why when you make some DLLs in Windows you will also end up with some lib extension libraries. The good part is that at runtime only the DLL is required.

To pass on all this information to the Visual Studio IDE you can either do it globally (so all your future projects will get these information) or locally (so only for you current project). The advantage of the global one is that you only need to do it once; however, it may be undesirable to clump all your projects all the time with all these information. In case of the global one how you do it depends on the Microsoft Visual Studio you use. There is a 2008 and previous versions and a 2010 way of doing it. Inside the global section of this tutorial I’ll show what the main differences are.

The base item of a project in Visual Studio is a solution. A solution may contain multiple projects. Projects are the building blocks of an application. Every project will realize something and you will have a main project in which you can put together this project puzzle. In case of the many simple applications (like many of the tutorials will be) you do not need to break down the application into modules. In these cases your main project will be the only existing one. Now go create a new solution inside Visual studio by going through the File ‣ New ‣ Project menu selection. Choose Win32 Console Application as type. Enter its name and select the path where to create it. Then in the upcoming dialog make sure you create an empty project.

Which options to select

The local method

Every project is built separately from the others. Due to this every project has its own rule package. Inside this rule packages are stored all the information the IDE needs to know to build your project. For any application there are at least two build modes: a Release and a Debug one. The Debug has many features that exist so you can find and resolve easier bugs inside your application. In contrast the Release is an optimized version, where the goal is to make the application run as fast as possible or to be as small as possible. You may figure that these modes also require different rules to use during build. Therefore, there exist different rule packages for each of your build modes. These rule packages are called inside the IDE as project properties and you can view and modify them by using the Property Manger. You can bring up this withView ‣ Property Pages. Expand it and you can see the existing rule packages (called Proporty Sheets).

An example of Property SheetThe really useful stuff of these is that you may create a rule package once and you can later just add it to your new projects. Create it once and reuse it later. We want to create a new Property Sheet that will contain all the rules that the compiler and linker needs to know. Of course we will need a separate one for the Debug and the Release Builds. Start up with the Debug one as shown in the image below:

Add a new Property SheetUse for example the OpenCV_Debug name. Then by selecting the sheet Right Click ‣ Properties. In the following I will show to set the OpenCV rules locally, as I find unnecessary to pollute projects with custom rules that I do not use it. Go the C++ groups General entry and under the “Additional Include Directories” add the path to your OpenCV include. If you don’t have “C/C++” group, you should add any .c/.cpp file to the project.

$(OPENCV_DIR)\..\..\include

Add the include dir like this.When adding third party libraries settings it is generally a good idea to use the power behind the environment variables. The full location of the OpenCV library may change on each system. Moreover, you may even end up yourself with moving the install directory for some reason. If you would give explicit paths inside your property sheet your project will end up not working when you pass it further to someone else who has a different OpenCV install path. Moreover, fixing this would require to manually modifying every explicit path. A more elegant solution is to use the environment variables. Anything that you put inside a parenthesis started with a dollar sign will be replaced at runtime with the current environment variables value. Here comes in play the environment variable setting we already made in our previous tutorial.

Next go to the Linker ‣ General and under the “Additional Library Directories” add the libs directory:

$(OPENCV_DIR)\lib

Add the library folder like this.Then you need to specify the libraries in which the linker should look into. To do this go to the Linker ‣ Input and under the “Additional Dependencies” entry add the name of all modules which you want to use:

Add the debug library names here.Like this.The names of the libraries are as follow:

opencv_(The Name of the module)(The version Number of the library you use)d.lib

A full list, for the latest version would contain:

opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib

The letter d at the end just indicates that these are the libraries required for the debug. Now click ok to save and do the same with a new property inside the Release rule section. Make sure to omit the d letters from the library names and to save the property sheets with the save icon above them.

opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249.lib
opencv_nonfree249.lib
opencv_objdetect249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_videostab249.lib

And the release ones.You can find your property sheets inside your projects directory. At this point it is a wise decision to back them up into some special directory, to always have them at hand in the future, whenever you create an OpenCV project. Note that for Visual Studio 2010 the file extension is props, while for 2008 this is vsprops.

And the release ones.Next time when you make a new OpenCV project just use the “Add Existing Property Sheet…” menu entry inside the Property Manager to easily add the OpenCV build rules.

Use this option.

The global method

In case you find to troublesome to add the property pages to each and every one of your projects you can also add this rules to a “global property page”. However, this applies only to the additional include and library directories. The name of the libraries to use you still need to specify manually by using for instance: a Property page.

In Visual Studio 2008 you can find this under the: Tools ‣ Options ‣ Projects and Solutions ‣ VC++ Directories.

VC++ Directories in VS 2008.In Visual Studio 2010 this has been moved to a global property sheet which is automatically added to every project you create:

VC++ Directories in VS 2010.The process is the same as described in case of the local approach. Just add the include directories by using the environment variable OPENCV_DIR.

Test it!

Now to try this out download our little test source code or get it from the sample code folder of the OpenCV sources. Add this to your project and build it. Here’s its content:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    if( argc != 2)
    {
     cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
     return -1;
    }

    Mat image;
    image = imread(argv[1], IMREAD_COLOR); // Read the file

    if(! image.data ) // Check for invalid input
    {
        cout << "Could not open or find the image" << std::endl ;
        return -1;
    }

    namedWindow( "Display window", WINDOW_AUTOSIZE ); // Create a window for display.
    imshow( "Display window", image ); // Show our image inside it.

    waitKey(0); // Wait for a keystroke in the window
    return 0;
}

You can start a Visual Studio build from two places. Either inside from the IDE (keyboard combination: Control-F5) or by navigating to your build directory and start the application with a double click. The catch is that these two aren’t the same. When you start it from the IDE its current working directory is the projects directory, while otherwise it is the folder where the application file currently is (so usually your build directory). Moreover, in case of starting from the IDE the console window will not close once finished. It will wait for a keystroke of yours.

This is important to remember when you code inside the code open and save commands. You’re resources will be saved ( and queried for at opening!!!) relatively to your working directory. This is unless you give a full, explicit path as parameter for the I/O functions. In the code above we open this OpenCV logo. Before starting up the application make sure you place the image file in your current working directory. Modify the image file name inside the code to try it out on other images too. Run it and voilá:

You should have this.

Command line arguments with Visual Studio

Throughout some of our future tutorials you’ll see that the programs main input method will be by giving a runtime argument. To do this you can just start up a commmand windows (cmd + Enter in the start menu), navigate to your executable file and start it with an argument. So for example in case of my upper project this would look like:

1
2
3
D:
CD OpenCV\MySolutionName\Release
MySolutionName.exe exampleImage.jpg

Here I first changed my drive (if your project isn’t on the OS local drive), navigated to my project and start it with an example image argument. While under Linux system it is common to fiddle around with the console window on the Microsoft Windows many people come to use it almost never. Besides, adding the same argument again and again while you are testing your application is, somewhat, a cumbersome task. Luckily, in the Visual Studio there is a menu to automate all this:

Visual Studio Command Line ArgumentsSpecify here the name of the inputs and while you start your application from the Visual Studio enviroment you have automatic argument passing.

Posted in Mixed | Leave a Comment »

Building Qt5 with Visual Studio 2012 / Visual Studio 2013, and integrating with the IDE

Posted by Hemprasad Badgujar on June 18, 2014

Compiling Qt 5 with Visual Studio 2012 (32 or 64 bit)

Steps to do:
1. Decide whether to compile 32bit or 64bit. If you’ll go with 32bit choose the following 32bit tools (the same with 64bit).
2. Install Python http://www.python.org/getit
3. Install Perl http://strawberryperl.com
4. Download Jom http://qt-project.org/wiki/jom
5. Download and extract Qt sources http://qt-project.org/downloads Search for the zip file:

6. Copy Jom files to the Qt sources directory.
7. Restart computer.
8. Make sure Python and Perl are accessible from command line:

  • python –version
  • perl -v

9. Open Visual Studio 2012 tools command prompt. It can be found here: Start ->  Microsoft Visual Studio 2012:
For 32 bit use VS2012 x86 Native Tools Command Prompt
For 64 bit use VS2012 x64 Cross Tools Command Prompt
10. Navigate to the Qt source directory and type:
configure -developer-build -opensource -opengl desktop -nomake examples -nomake tests
11. Type:
jom
12. Wait until the compilation is finished. It will take about 30-60 minutes.
13. Once compiled do some cleanup. Following command will remove temporary files:
jom clean

In Long Short

The sequence below should be executed in the exact given order:

0 – Uninstall Avast (if you have this installed) to avoid building errors. Due to an Avast bug, deactivating it will not work;

1 – Install Git (>= 1.6.x);

2 – Install Python (>=2.6.x). [python.org];

3 – Install Perl (>=5.14). [activestate.com];

4 – Install Ruby. [rubyinstaller.org];

5 – Open the normal Windows 7 Command Prompt (don’t use VS2012 Developer Command Prompt by now);

6 – Choose any directory you want for qt5, regarding that NO SPACES ARE ALLOWED for the chosen path. I decided to use the path “C:\qt5″;

7 – At the normal Windows 7 Command Prompt (in my case, prompting “C:\qt5>”) type:

git clone git://gitorious.org/qt/qt5.git qt5

8 – Checkout the stable version:

cd qt5
git checkout stable

9 – You’ll probably receive a message confirming that this version is already stable. Close the Command Prompt;

10 – Open Visual Studio’s Developers Console (All Programs > Visual Studio 2012 > Visual Studio Tools > Developer Command Prompt for VS2012) and change the current directory to the one you have chosen(“C:\qt5″ in my example);

11 – Download Qt submodules, ignoring webkit (common source of build errors…):

perl .\init-repository --no-webkit

12 – Now enter this huge command to configure your build properly:

configure -developer-build -opensource -nomake examples -nomake tests -nomake demos -debug-and-release -c++11-mp -nomake webkit -confirm-license

13 – Next, ensure that the module qlalr will NOT be built. To do this, open Windows Explorer and navigate to your chosen Qt directory (“C:\qt5” in my example) and check if the folder qlalr exists. If so, delete it;

14 – Time to build… Possible build errors would come from secondary modules (such as webkit), which don’t affect the main Qt functionality (webkit itself should not be a problem since we’ve previously set the configuration not to build it). We can then ignore them and also keep the build running on independent modules:

nmake /I /K

15 – To conclude integration, follow the step 3 of Dan Nissenbaum’s post above(“Step 3: Integrating Qt5 with Visual Studio 2012″).

 

UPDATE This method is tested to work on Visual Studio 2013. You need to build it yourself for full OpenGL functionality

UPDATE Pre-built binaries using the VS 2012 compiler are now available here. I am currently working through this process using VS 2013 to verify that these same steps can be used for the 2013 version.

Step 1: The Setup

  1. Download and install RapidEE here. RapidEE is a windows environment variables editor. It is extremely useful for the rest of this process (and just in general).
  2. Install the DirectX 11 SDK. It is now part of the Windows 8 SDK, so you first have to install the DirectX 10 SDK, which you can get here (but see warning in next sentence). If you have the Visual C++ 2010 Redistributable Package installed, and you probably do (it is automatically installed along with VS 2010), follow the steps outlined here to assist with the DirectX 10 installation. Once you have the DirectX 10 SDK installed, download and install the Windows 8 SDK here, which contains the DirectX 11 SDK. Yes, this is a pain, but unless you know you have the DirectX 11 SDK, the Qt build will fail.
  3. Install Python for Windows (I’ve heard 2.6+, working with 3.3) from Python.org
  4. Install Perl for Windows from ActiveState

Step 2: Gitting (and building) Qt5 (yes, that means Git)

  1. Follow the installation guide for Windows at the qt-project website.Summary

    To summarize the details from the above link and from the following notes (PLEASE SEE FOLLOWING NOTES if you have any errors; they might be answered):

    • Uninstall Avast (if you have this installed) to avoid build errors. Yes, that literally means uninstallit. Remove it 100% from your system. Deactivating it will not work. See detailed notes below.
    • Note for the first steps: DO NOT use SmartGit for the first git pull, below (unless you really know what you’re doing), as SmartGit’s defaults will pull everything, and that’s not what you want.
    • Git for Windows must be installed.
    • Decide where you want to put the Qt installation, and cd to the directory that will contain the new installation from any Command Prompt window. (Because the process is so fragile and error-prone, I personally put it directly in C:, but this is likely not necessary).
    • From the above directory, execute:git clone git://gitorious.org/qt/qt5.git qt5

      This is fast. Once complete, you should be on the ‘stable’ branch, but you can always run git checkout stable after cding into the newly-created qt5 directory, just to be sure.

    • Close out of your current command prompt window (if it’s not a Visual Studio command prompt window) before proceeding to the next step. This is to make sure you’re using the Visual Studio command prompt window in the next steps.
    • Next run the 32-bit (x86) or 64-bit VS Tools command prompt (depending on whether you’re building Qt5 as 32- or 64-bit). To access this, you must find it through the Start menu – go to Program Files -> [Microsoft] Visual Studio 2012 -> Visual Studio Tools, and you’ll see it in there with a funny name; the name should include the phrase Native Tools; the 32-bit version will have x86 in the name and the 64-bit version will have x64 in the name.
    • cd into the newly-created qt5 directory from the step above
    • From within the Visual Studio command prompt, the remainder of the Qtsubmodules must be downloaded:perl ./init-repository --no-webkit

      It takes kind of a while to execute this step, because it has to download a lot, but it’s not too terrible on a decent connection.

    • Then download any remaining OPTIONAL submodules that init-repository does not download – SmartGit works well only starting at this stage (see comments below).
    • Once the download of Qt is complete, the following command prepares the build environment (it should also be executed using the [32|64] VS Native Tools Command Prompt):configure -developer-build -opensource -mp -nomake examples -nomake tests -debug-and-release -c++11 -no-warnings-are-errors -platform win32-msvc2012.

      Notes on this command line: the c++11 option might not be necessary with the VS2012 compiler; the -no-warnings-are-errors is necessary in case you get errors on a 64-bit automatic build of ANGLE; -platform is automatically set to win32-msvc2012, so by default the 32-bit build of Qt is used, and -platform probably does not need to be supplied at the command line (EVEN if you have previous versions of VS installed).

      It takes a few minutes to execute this step, but it’s not so bad.

    • Anyone who successfully builds a 64-bit version of Qt5 on Windows using the VS 2012 compiler, please update this Wiki to state what steps are necessary – such as the -platform argument to configure.
    • Finally, the command to actually build Qt on the system (also run within the VS Native Tools Command Prompt) is simply:nmake

      Expect to wait hours for the build to complete.


NOTES:

General Notes

In case you’re confused from the above-linked documentation, just an FYI that the ANGLE library will be used (by default) instead of OpenGL, and that’s why you had to install DirectX 11, above.

Make sure that you use the VS Native Tools Command Prompt to run all commands from the above link (that is, perl .\init-repository --no-webkitconfigure, and nmake). You will use the [32|64] bit command prompt (x86 or x64), depending on whether you are building Qt as 32-bit or 64-bit. If you install perl with the Command Prompt open (make sure it is in the PATH), you will need to restart the Command Prompt for perl to be recognized as a command.

When running “init-repository” (from the steps in the above link), it’s not clear from the documentation, but you must execute this via perl; i.e. perl ./init-repository --no-webkit. The configureand nmake commands, however, are called directly.

One very useful option to pass to configure is -mp, which causes Qt to build on multiple cores in parallel, significantly speeding up the (long) build time.


Unicode Support (ICU)

If you want Unicode support (via ICU), pay special attention to the instructions noted within the link above. In summary, ICU must be built from scratch in VS 2012, as the only prebuilt ICU binaries for Windows are for VS 2010. Building in VS 2012 is painless – simply locate the ICU solution (.sln) in \icu\source\allinone, and build in both Debug and Release mode (either in 32-bit or 64-bit mode, depending on which mode you’re building Qt in – DO NOT build in the other bitness, because ICU will overwrite the output folder with the binaries). (The Qt build process will properly locate the debug vs. release build of ICU.) It should build without errors. Then, add the path to \lib as a string entry in a (probably) NEW Windows environment variable called “LIB” (you can use Rapid EE for this; make LIB an “expandable string” in RapidEE even though there’s only 1 entry), and also add the path to \include as a string entry in a (probably) NEW Windows environment variable called “INCLUDE”. (Note: Adding these paths to the PATH variable will not work.) After Qt is built, you can remove all of these entries you’ve just added. Also, do add the runtime path to the ICU dll’s (\bin) to the environment’s PATH variable, or the Qt build process (specifically, when uic.exe runs) will give a deceptive and misleading error. Finally, on the configure command line (below), be sure to add -icu as an additional command-line parameter.

ICU Failure:

Currently, there seems to be a bug building Qt5 with the VS2012 compiler WHEN ICU IS ENABLED. Specifically, qtbase\src\corelib\codecs\qtextcodec.cpp Line 688 (Qt5 v5.02) fails to return a codec for codec name “US-ASCII” (the codec is NULL), causing “lrelease.exe” to crash when trying to dereference the codec later (I have lost track of that file/line number, but it is an obvious dereference of the NULL codec variable). Unfortunately, this means that to my knowledge, WebKit cannot be built with (at least the) 32-bit build of Qt5 with the VS2012 compiler, because WebKit requires ICU.

If anyone is able to build Qt5 with the VS2012 compiler with ICU enabled, please update this Wiki saying so.

ICU Clarification:

If you have ICU in your path, Qt will automatically built it. In other words, the flag “-icu” is there implicitly. However, this causes an error with “lrelease.exe” as mentioned above. So the way around this would be to add the flag, -no-icu to the configure command


Additional Submodules

If you want submodules in addition to the default submodules, you can use SmartGit (or command line)after you complete the init-repository command. SmartGit is perhaps easiest, because you do not need to copy the path to the command line, but can use the user interface directly.

WARNING: DO NOT DOWNLOAD THE OPTIONAL qlalr SUBMODULE, as it will not build in combination with the overall Qt build, and is not necessary for users of Qt, but is only used for internal Qt development.

WARNING: A shell command line, followed by perl .\init-repository --no-webkit, must be used (NOT SmartGit); these steps will properly only download the default Qt submodules. You must not use SmartGit to clone and download the Git files from git://gitorious.org/qt/qt5.git because SmartGit does not currently handle the submodules properly. Instead, open a standard Windows shell command prompt (using any command-prompt application, not necessarily the VS Tools command prompt), and (assuming Git is properly installed on the system; a SmartGit installation might or might not do this automatically; if it does not, go to Git for Windows and install directly) type git clone git://gitorious.org/qt/qt5.git directly from the command line; perhaps follow that with git checkout stable (I’m not sure if this branch is checked out by default); then follow that with the command line perl .\init-repository --no-webkit to pull down the DEFAULT repositories (except WebKit, which requires ICU and ICU seemingly cannot be built in 32-bit Qt5 with VS2012; see comments).

The steps for downloading all necessary Qt source files therefore are: 1. Use a Windows command line to execute the initial git clone git://gitorious.org/qt/qt5.git; 2. Execute perl .\init-repository --no-webkit from within a VS Tools 2012 Command Prompt; and then optionally 3. Use SmartGit (from above link) (or equivalent) to “open an existing project” (choose the Qt5 root folder) and do a Pull from within SmartGit to download any non-default repositories (but do not download qlalr). That’s it; you have all necessary and optional Qt files (including submodules) on your system.

 

If anybody discovers other optional submodules that fail to build and/or are for internal use only (besidesqlalr), please update this Wiki to specify them.

In general, the default submodules obtained via perl .\init-repository --no-webkit are sufficient. If you know, or later find out, that you other (non-default) modules, you can always add them later.


General Problems

If at some point you get the error saying that the command “python” (or anything similar) is not recognized, just check that the folder containing python.exe (or the appropriate .exe) is part of the path variable. If it is not, add it (use RapidEE as noted above for convenience) and try what you were doing again. If it is there, make sure you have restarted your command prompt AFTER the addition of the command to the path.

Two other path-related issues are important to note (quoted from the documentation associated with the link above): “Make sure the perl executable is found in the path before the perl executable provided by msysgit, since the latter is outdated“; and “You might not be able to build if sh.exe is in your PATH (for example due to a git or msys installation). Such an error is indicated by qt5-srcqtbasebinqmake.exe: command not found and alike. In this case, make sure that sh.exe is not in your path. You will have to re-configure if your installation is already configured.

During the process, you may encounter an error using nmake on a file. If you do, just go into that directory and force build the problem file. Then begin the nmake process on Qt5 again.


Specific Problems

WARNING: You may need to disable antivirus software AND SANDBOXING during the Qt nmakeprocess (and, to be safe, throughout this entire process). Internally, Qt executes a number of executables that antivirus programs can interfere with (sometimes silently). In particular, if you have any sandboxing software, be SURE to disable sandboxing.

WARNING: AVAST! Sandbox users: Avast Sandbox has a bug in which even when you disable Avast’s auto-sandbox, the sandbox will NOT turn off and it will silently sandbox all resource files automatically created by Qt’s rcc program during Qt’s build process. The Qt build ALWAYS fails for any user who has installed the Avast autosandbox feature, EVEN WITH AUTO-SANDBOXING TURNED OFF. THE ONLY WAY TO OVERCOME THIS ISSUE IS TO COMPLETELY UNINSTALL AVAST! FROM YOUR SYSTEM before building Qt. You can reinstall Avast! after the Qt build is complete.


The compilation of Qt5 can take a long time (hours, even with the -mp multithreading option). Patience.


Step 3: Integrating Qt5 with Visual Studio 2012

  1. Download and install the Visual Studio Qt5 addin. It is in the “Other Downloads” section near the bottom of the page, and will not work with Visual Studio Express.
  2. Open Visual Studio 2012, and go to Qt Options (It’s under “Qt5″ on the top menu bar).
  3. In the Qt Versions tab, check to see if Qt5 is already there. If it is not, click add, choose a version name (probably a name such as 5.x.x), and navigate to the folder containing qmake.exe (usually C:\Qt\qt5\qtbase).
  4. Exit the Qt Options dialog.
  5. Create a new Visual Studio Project. When you see the New Project dialog, you should see the Qt5 Projects Template option.
  6. Once you have your new Qt Project, right click on it and select “Convert to QMake generated project”. Build the project, then right click on it again and select “Convert project to Qt Add-in project”. Build again, then run. You should now have a working Qt Project.

Add Qt5 to an existing Visual Studio 2012 VC++ project

This section may or may not work for you. If you run into problems or have additional/better solutions, please leave a comment or edit the appropriate step.

  1. Right-click on your project in VS, and choose “unload project”. Right click on the project again, and select “edit [project name].vcxproj”. This opens the project file so you can add Qt5 to it.
  2. Go down to the Global PropertyGroup, and add or change the <Keyword> to Qt4VSv1.0.
  3. Reload the project, then right-click and select “Convert project to Qt Add-in project”
  4. Wait for the conversion to finish (it does not take more than a couple seconds), then choose Qt5>Project Settings. Go to the Modules tab, and check the modules you would like your project to rely on (the basic ones are CoreWidgets, and GUI).
  5. Following the steps here, add the directory $(QTDIR)\include.

    NOTES:

    If at any time you are including windows.h, you need to #define NOMINMAX before doing so to prevent conflict with qdatetime.h

    Once the above steps are done, you can make your project usable by Qt Creator by selecting Qt5>Create basic .pro file.


ENDING NOTES: This guide was written from memory and will likely not cover every problem you run into. If you have a question related to the information contained in this guide, please post it as a question, and the answer or a link to the answer may get added.

Posted in Mixed | Leave a Comment »

CUDA Vector Addition

Posted by Hemprasad Badgujar on June 14, 2014

This sample shows a minimal conversion from our vector addition CPU code to C for CUDA, consider this a CUDA C ‘Hello World’. If you are not yet familiar with basic CUDA concepts please see section 1 of the Accelerated Computing Guide. The full source can be viewed or downloaded from the OLCF GitHub. Please direct any questions or comments tohelp@nccs.gov

vecAdd.cu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// CUDA kernel. Each thread takes care of one element of c
__global__ void vecAdd(double *a, double *b, double *c, int n)
{
    // Get our global thread ID
    int id = blockIdx.x*blockDim.x+threadIdx.x;
    // Make sure we do not go out of bounds
    if (id < n)
        c[id] = a[id] + b[id];
}
int main( int argc, char* argv[] )
{
    // Size of vectors
    int n = 100000;
    // Host input vectors
    double *h_a;
    double *h_b;
    //Host output vector
    double *h_c;
    // Device input vectors
    double *d_a;
    double *d_b;
    //Device output vector
    double *d_c;
    // Size, in bytes, of each vector
    size_t bytes = n*sizeof(double);
    // Allocate memory for each vector on host
    h_a = (double*)malloc(bytes);
    h_b = (double*)malloc(bytes);
    h_c = (double*)malloc(bytes);
    // Allocate memory for each vector on GPU
    cudaMalloc(&d_a, bytes);
    cudaMalloc(&d_b, bytes);
    cudaMalloc(&d_c, bytes);
    int i;
    // Initialize vectors on host
    for( i = 0; i < n; i++ ) {
        h_a[i] = sin(i)*sin(i);
        h_b[i] = cos(i)*cos(i);
    }
    // Copy host vectors to device
    cudaMemcpy( d_a, h_a, bytes, cudaMemcpyHostToDevice);
    cudaMemcpy( d_b, h_b, bytes, cudaMemcpyHostToDevice);
    int blockSize, gridSize;
    // Number of threads in each thread block
    blockSize = 1024;
    // Number of thread blocks in grid
    gridSize = (int)ceil((float)n/blockSize);
    // Execute the kernel
    vecAdd<<<gridSize, blockSize>>>(d_a, d_b, d_c, n);
    // Copy array back to host
    cudaMemcpy( h_c, d_c, bytes, cudaMemcpyDeviceToHost );
    // Sum up vector c and print result divided by n, this should equal 1 within error
    double sum = 0;
    for(i=0; i
        sum += h_c[i];
    printf("final result: %f\n", sum/n);
    // Release device memory
    cudaFree(d_a);
    cudaFree(d_b);
    cudaFree(d_c);
    // Release host memory
    free(h_a);
    free(h_b);
    free(h_c);
    return 0;
}

Changes:

Kernel:
The kernel is the heart of our CUDA code. When a kernel is launched the number of threads per block(blockDim) and number of blocks per grid(gridDim) are specified. The total number of threads is (blockDim) * (gridDim). Each thread evaluates one copy of the kernel.

5
6
7
8
9
10
11
12
13
14
// CUDA kernel. Each thread takes care of one element of c
__global__ void vecAdd(double *a, double *b, double *c, int n)
{
    // Get our global thread ID
    int id = blockIdx.x*blockDim.x+threadIdx.x;
    // Make sure we do not go out of bounds
    if (id < n)
        c[id] = a[id] + b[id];
}

Let’s take a look at what makes up this simple kernel.

6
__global__ void vecAdd(double *a, double *b, double *c, int n)

The __global__ decorator specifies this is a CUDA kernel, otherwise normal C function syntax is used. The kernel must have return type void.

9
int id = blockIdx.x*blockDim.x+threadIdx.x;

We calculate the threads global id using CUDA supplied structs. blockIdx contains the blocks position in the grid, ranging from 0 to gridDim-1. threadIdx is the threads index inside of it’s associated block, ranging from 0 to blockDim-1. For convenience blocks and grids can be multi dimensional, the associated structs contain xy, and z members.

12
if (id < n)

Unless we have an array length divisible by our blockDim we will not have the same number of threads launched as valid array components. To avoid overstepping our array we simply test to make sure our global thread ID is less than the length of our array.

13
c[id] = a[id] + b[id]

the thread ID is used to index the arrays that reside in global device memory. Each thread will load a value from a and band write the sum to c

Array Pointers:

21
22
23
24
25
26
27
28
29
30
31
// Host input vectors
double *h_a;
double *h_b;
// Host output vector
double *h_c;
// Device input vectors
double *d_a;
double *d_b;
// Device output vector
double *d_c;

With the host CPU and GPU having separate memory spaces we must maintain two sets of pointers, one set for our host arrays and one set for our device arrays. Here we use the h_ and d_ prefix to differentiate them.

cudaMalloc:

41
42
43
44
// Allocate memory for each vector on GPU
cudaMalloc(&d_a, bytes);
cudaMalloc(&d_b, bytes);
cudaMalloc(&d_c, bytes);

Given a pointer cudaMalloc will allocate memory in the devices global memory space and set the passed pointer to point to this memory.

cudaMemcpy to device:

53
54
55
// Copy host vectors to device
cudaMemcpy( d_a, h_a, bytes, cudaMemcpyHostToDevice);
cudaMemcpy( d_b, h_b, bytes, cudaMemcpyHostToDevice);

After we initialize the data on the host we must copy it over to the device, to do so we use cudaMemcpy. By calling cudaMemcpy we initiate a DMA transfer between host and device.

Thread mapping:

57
58
59
60
61
62
63
int blockSize, gridSize;
 
// Number of threads in each thread block
blockSize = 256;
 
// Number of thread blocks in grid
gridSize = ceil((float)n/blockSize);

To launch our kernel we must specify the number of threads per block and the number of blocks in our grid. The maximum value of both is dependent on the devices compute capability. Normally the blockSize will be chosen based upon kernel memory requirements and the gridSize calculated such that enough threads are launched to cover the kernel domain.

Launch kernel:

65
66
// Execute the kernel
vecAdd<<< gridSize, blockSize >>>(d_a, d_b, d_c, n);

We launch our kernel with a modified C function syntax that lets us specify the grid and block sizes. Kernel calls are non blocking.

cudaMemcpy to host:

68
69
// Copy array back to host
cudaMemcpy( h_c, d_c, bytes, cudaMemcpyDeviceToHost );

cudaMemcpy will block until the kernel is complete and then copy the results from the device back to the host.

release device memory

77
78
79
80
// Release device memory
 cudaFree(d_a);
 cudaFree(d_b);
 cudaFree(d_c);

As with C malloc we need to release our device arrays when we are finished, to do so we use cudaFree.

Compiling:

The CUDA environment must be set up so before compiling make sure the module is loaded

$ module load cudatoolkit
$ nvcc vecAdd.cu -o vecAdd.out

Running:

$ aprun ./vecAdd.out
final result: 1.000000

Posted in CUDA, GPU (CUDA), PARALLEL | Leave a Comment »

 
Ronzii's Blog

Just your average geek's blog

Karan Jitendra Thakkar

Everything I think. Everything I do. Right here.

VentureBeat

News About Tech, Money and Innovation

Chetan Solanki

Helpful to u, if u need it.....

ScreenCrush

Explorer of Research in Information Technology

managedCUDA

Explorer of Research in Information Technology

siddheshsathe

A great WordPress.com site

Ari's

This is My Space so Dont Mess With IT !!

Business India 2.0

All about Business Travel 2.0 ideas,technology,ventures and the capital making its happen

Something More for Research

Explorer of Research in Information Technology

WordPress.com News

The latest news on WordPress.com and the WordPress community.

Follow

Get every new post delivered to your Inbox.

Join 2,946 other followers

%d bloggers like this: