OpenCV and OpenVX What is the connection and difference?

Reference: https://www.zhihu.com/question/37894914

Opencv transplanted to the embedded arm detailed process: https://blog.csdn.net/Guet_Kite/article/details/78667175

 

Author: xupeng2202
link: https: //www.zhihu.com/question/37894914/answer/199714413
Source: know almost
copyrighted by the author. Commercial reprint please contact the author authorized, non-commercial reprint please indicate the source.
 

At first switch to do an embedded computer vision, boss assigned the task of learning OpenVX, doing more than a week, to talk about my own views.
Do not know just because OpenVX developed not long after, I feel really very little information, few examples, even to achieve very little. So here only to explain both the differences and connections right from the macro.
---------------------------
briefly talk about OpenVX in the end is what it. OpenVX standard is actually just a skeleton, only a few header declares a lot of macros, enumeration, variable type, function and so on, which are not yet able to function, because only the statement did not realize. Want to achieve, you have someone write cpp file, header file in the function definition Well, this could be the developer calls.
Why would you define such a standard? In fact is the case, we all know the various hardware manufacturers of chip structure and function very different, the same c language code to implement on different hardware performance are quite different, so I want to maximize the performance of the hardware, the hardware itself must be Code optimization. In this way, the same algorithm, after different hardware optimized code is not the same, which caused great distress to the developer, because once incumbent platform to achieve a certain function, the original code can not be used. To solve this problem, many hardware vendors (including Intel, AMD, TI, Apple, etc.) sit together to discuss, can develop a unified open standard, allows developers to focus only achieve the above algorithm in hardware rather than on each kind of small problems. Hardware itself is certainly production of hardware manufacturers are most familiar with, then those portions of code differences due to different hardware devices caused by the manufacturer to achieve on the best, not only can take full advantage of the hardware itself, but also facilitate the development of personnel.
These bigwigs sit together to solve similar problems not the first time, as early as the beginning of this century they formed an organization called the Khronos Group, specifically engaged in this kind of cross-platform standards, and these standards are open source, more famous OpenCL, OpenGL standards, and so they are established. But note, OpenCV not do this out of the organization, which was founded by Intel, and later maintained by the Open Source Computer Vision Library Willow Garage supported.
Well, everybody talked about here should understand that the purpose of the OpenVX standards, saying that white is to achieve cross-platform accelerated processing. Then say something to accelerate its fundamental principles. Actually, the image processing is a matrix array of picture series of operations, and then find the information we want from the results. Each basic operation of the image can be viewed as a node (node) throughout the process, this node and other nodes connected by the image before and after their treatment, and treatment to form a network, we here call graph. One hardware developers need to do is to find ways to achieve node code for your own hardware to conform to the standard OpenVX and can be optimized on their own hardware. Next, developers just need to connect these node graph, realize their functions. Finally, the developers again for their own hardware acceleration to graph optimization.
As a result, the developer's workload was greatly reduced, it can shorten the development cycle, improve code portability.
Someone is bound to ask, if these manufacturers to achieve the node can not meet my needs how to do? Then OpenVX node provides a custom mechanism that allows users to write node according to their needs and, ultimately, integration and graph. Write your own node on and before the development of the same, you can choose to use the OpenCV function, you can also write your own processing operations, but also accelerated with the GPU through OpenCL. But in any case, are on the OpenVX the big frame.
As can be seen from the above, OpenVX and OpenCV are not in conflict, they can be said to be complementary, OpenVX can better play its strengths in embedded and real-time systems, in some cases with OpenCV can achieve more powerful features Good results.
More ....
(soon started going to the pit, unprofessional place please excuse)

Released seven original articles · won praise 13 · views 20000 +

Guess you like

Origin blog.csdn.net/xingsongyu/article/details/103489182