I own a machine shop since 1993. High end, short run production on complex aerospace parts. I have nearly 3600 distinct part numbers that we have worked on, each with their CNC machining files etc.
Could OpenCV be used to classify (or sort) objects without having an actual image of the part, by somehow reading the 3D CAD file?
Ultimately I’d like to be able to feed it a new part, and have the system say something like “we made a part like this in 2003, here it is”, to be able to see how me made it.
I’d say that’s tricky because I haven’t done that.
I don’t know if OpenCV can solve that in its entirety. it’s a decent foundation though.
there is research (papers) in Computer Vision that deals with object recognition given a bunch of example views, so you might have to render a bunch of views of your CAD model… each of your CAD models.
Deep Learning (neural networks) is state-of-the-art. that means you’ll train a neural network on infinite views of your CAD models, and it’ll then classify what it sees in terms of your models. OpenCV can run DNNs (inference) but you’ll have to train them elsewhere, like with tensorflow, pytorch, MATLAB, … there are various web services that might be able to make this easier.
instead of a camera picture, you could also work with point clouds, i.e. 3D scans, of your parts. there are approaches that work with 3D data instead of pictures.
industrial inspection talks about “Machine Vision”. there exists the task of finding instances of a CAD model in a 3D point cloud… say you have a bin filled with parts (one type), and there are systems that locate at least one part in that mess to be picked by a robot. the approach assumes to be looking for one or two models, in a whole heap of instances, but that surely can be inverted, and made to find the model among many that fits the scan of one instance.
you might wanna call up commercial machine vision providers. I don’t mean to advertise for any of these but I know their names because they’re big in the industry: MVtec (Halcon), Cognex (VisionPro), …