Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am a freshman college student currently learning C++ programming. I am good at

ID: 659050 • Letter: I

Question

I am a freshman college student currently learning C++ programming. I am good at math and physics, so I am looking to specialize in 2D/3D graphics with OpenGL. My question is about the differences between OpenGL and OpenCV, and the amount of overlap these areas have. From what I have read, one creates graphics while the other processes them. I have many books on 3D graphics and the mathematics associated with it. What I am wondering is if the same concepts I am learning in OpenGL could be applied to OpenCV. Is it possible to become a C++ software engineer that could specialize in both OpenGL AND OpenCV, or is this an unrealistic goal?

I ask these questions because I understand that 2D/3D graphics programming requires a tremendous amount of knowledge in math and physics, but I don't know too much about OpenCV and the prerequisite skills necessary to "get my foot in the door".

Explanation / Answer

OpenGL is a 3D graphics API. It provides APIs describe a 3D scene and render it to a framebuffer and ultimately display it on a screen. The primitives it has are vertex lists, triangle lists, normal vector lists, etc. n.b. 2D is a special case of 3D; IIRC OpenGL doesn't have explicit 2D support (i.e. sprites and bit blit)

OpenCV is a computer vision (CV) API, and has implementations of various CV algorithms, blob detection, template matching, etc.

OpenCV generally operates on real image data, and wouldn't operate on graphics generated by OpenGL. (unless one was trying to make an AI bot that only sees the framebuffer output of a game, but that in another tangent altogether.)

"Is it possible to become a C++ software engineer that could specialize in both OpenGL AND OpenCV, or is this an unrealistic goal?"

Sure, they are different types of systems, and you could specialize in more than one thing. As for OpenGL and 3D graphics, if you learn one you can probably use any of them.

For computer vision learing one system will certianly help with another, but probably not to the same extent as computer graphics.

n.b This question probably belongs an another board.