I have an upcoming project which is about image segmentation i.e. to group the pixels constituting the image into clusters based on certain visual properties of the pixel.
We plan to do it in C++ and have zeroed in on two image processing/manipulation libraries - OpenCV and ImageMagick. I'm reading on ImageMagick and it seems it has lot of APIs to manipulate the image. That's good but in our project we would be using quite a bit of linear algebra and matrix manipulations pertaining to the pixels forming the image, in order to get the segmentation done. I wonder whether ImageMagick has any support for that.
How about OpenCV, how good it is to suit my needs?
I've used OpenCV for this type of task and have found it to work very well. It's well documented and has many of the types of operations that one typical needs for image analysis. I don't see how ImageMagick could even get you started on this.
I'm assuming here that what you mean by "image segmentation" is grouping pixels into clusters based on their value and the values of neighbouring pixels. If you're just counting pixels properties independently and essentially just want to load an image into an matrix, it probably doesn't matter what you use; but to do any analysis, OpenCV is the way to go, or at least worth a good look.
I suggest looking at some of the typical functions one needs, like Erode, Canny Edge Detection, Adaptive Thresholds, Contouring algorithms, etc, and check whether ImageMagick has any of these.
opencv is more suited for Computer Vision, ImageMagick is a much more generic Image Processing tool.
I find ImageMagick more useful for Image Processing projects as it has a richer set of API than openCV.
But if you are working on Computer Vision related stuff, like for example object detection, OpenCV might be good.