# Overview

## Computer vision

Computer vision (CV) is the key technology to make things smart.

Computer vision technology is used in different domains and use cases, for example, smart phones, robotics, IoT, automotives, etc.

Some use cases (including but not limited to) are:

- Image processing
- Image transformation
- Motion and object tracking
- Object detection
- Feature detection
- Color conversion

## OpenCV

- OpenCV (open-source computer vision library: [http://opencv.org](http://opencv.org)) is the world’s biggest computer vision library.
- It is open source, contains over 2500 algorithms, and is operated by the non-profit Open Source Vision Foundation.
- It is easy to build, openly available, and easy to integrate on any platform.
- OpenCV as the developer-facing API allows developers to seamlessly leverage and port existing OpenCV-based applications
to Qualcomm Snapdragon platforms.

|  | Supported OpenCV version | Current implementation |
| --- | --- | --- |
| Current release | OpenCV 4.10 | CPU and FastCV |

## FastCV

- The FastCV library is Qualcomm proprietary and provides faster implementations of CV algorithms on various hardware
compared to other CV libraries.
- These APIs allow users to accelerate FastCV functions on hardware.
- It provides two main features to computer vision application developers:

    - A library of CV functions optimized to run efficiently on Qualcomm hardware.
    - A clean, processor-agnostic hardware acceleration API

## OpenCV acceleration with FastCV

- Provides acceleration of OpenCV APIs with FastCV as the backend to provide better performance.
- OpenCV functionality is enhanced with FastCV-based Extension APIs which were not present in earlier versions, which included only the default OpenCV library.
- The eSDK provides an easy method to build CV applications using the OpenCV APIs and auto tools.
- CV applications can be developed using the default OpenCV APIs. The OpenCV library calls FastCV HAL APIs which then call FastCV algorithms.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by Microsoft Visio, SVG Export cv-block-diagram.svg cv-block-diagram -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="8.32292in" height="1.88542in" viewbox="0 0 599.25 135.75" xml:space="preserve" color-interpolation-filters="sRGB" class="st7" svgdefaultwidth="679"><v:documentproperties v:langid="1033" v:viewmarkup="false">	<v:userdefs>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-1 .st1 { fill: #f8f8f8; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st2 { fill: #7ba0ff; stroke: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 0.75 }
.svg-1 .st3 { fill: #000000; font-family: Roboto; font-size: 1.16666em }
.svg-1 .st4 { font-size: 1em }
.svg-1 .st5 { marker-end: url("#mrkr13-21"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1 }
.svg-1 .st6 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.28409090909091 }
.svg-1 .st7 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend13">		<path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"></path>	</g>	<marker id="mrkr13-21" class="st6" v:arrowtype="13" v:arrowsize="2" v:setback="10.56" refx="-10.56" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend13" transform="scale(-3.52,-3.52) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>cv-block-diagram</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape7-1" v:mid="7" v:groupcontext="shape" transform="translate(18.375,-18.375)">		<title>Sheet.7</title>		<rect x="0" y="36.75" width="562.5" height="99" class="st1"></rect>	</g>	<g id="shape1-3" v:mid="1" v:groupcontext="shape" transform="translate(23.625,-27.375)">		<title>Sheet.1</title>		<desc>OpenCV application</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="76.5" cy="95.0625" width="153.01" height="81.375"></v:textrect>		<rect x="0" y="54.375" width="153" height="81.375" class="st2"></rect>		<text x="51.18" y="90.86" class="st3" v:langid="1033"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>OpenCV<v:lf></v:lf><tspan x="42.13" dy="1.2em" class="st4">application</tspan></text>		</g>	<g id="shape2-7" v:mid="2" v:groupcontext="shape" transform="translate(223.125,-27.375)">		<title>Sheet.2</title>		<desc>OpenCV acceleration with FastCV HAL/extension</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="76.5" cy="95.0625" width="153.01" height="81.375"></v:textrect>		<rect x="0" y="54.375" width="153" height="81.375" class="st2"></rect>		<text x="11.18" y="82.46" class="st3" v:langid="1033"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>OpenCV acceleration <tspan x="21.14" dy="1.2em" class="st4">with FastCV HAL/</tspan><tspan x="46.3" dy="1.2em" class="st4">extension</tspan></text>		</g>	<g id="shape3-12" v:mid="3" v:groupcontext="shape" transform="translate(422.625,-27.375)">		<title>Sheet.3</title>		<desc>Hardware acceleration with FastCV</desc>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="76.5" cy="95.0625" width="153.01" height="81.375"></v:textrect>		<rect x="0" y="54.375" width="153" height="81.375" class="st2"></rect>		<text x="6.24" y="90.86" class="st3" v:langid="1033"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>Hardware acceleration<v:newlinechar></v:newlinechar><tspan x="39.08" dy="1.2em" class="st4">with FastCV</tspan></text>		</g>	<g id="shape8-16" v:mid="8" v:groupcontext="shape" transform="translate(176.625,-67.875)">		<title>Sheet.8</title>		<path d="M0 135.75 L35.94 135.75" class="st5"></path>	</g>	<g id="shape9-22" v:mid="9" v:groupcontext="shape" transform="translate(376.125,-67.875)">		<title>Sheet.9</title>		<path d="M0 135.75 L35.94 135.75" class="st5"></path>	</g></g>
</svg>

**Architecture block diagram**

Last Published: Dec 27, 2024

[Next Topic
Getting Started](https://docs.qualcomm.com/bundle/publicresource/80-70017-21/topics/getting-started.md)