herisson

herisson

Hi!
I’m currently trying to implement a simple point detection pipeline in order to get the points positions in an image :

For that, I start by finding contours in the image, then try to use the cv.moments(contour) function to find their centroid.

img = Evision.imread("***/elixir/membrane/points-img.png")
bw = Evision.imread("***/elixir/membrane/points-img.png",  flags: Evision.Constant.cv_IMREAD_GRAYSCALE())
|> Evision.threshold(50, 255, Evision.Constant.cv_THRESH_BINARY())
|> then(fn {_, mat} -> mat end)


{contours, _ } = Evision.findContours(bw, Evision.Constant.cv_RETR_TREE(), Evision.Constant.cv_CHAIN_APPROX_SIMPLE())

contours
|> Enum.map(fn c -> 
  moments = Evision.moments(c, binaryImage: true)
  IO.inspect(Evision.contourArea(c), label: "Contour area")
  moments
  end)
|> IO.inspect()

However, the Evision.moments function always returns an empty map. (I tried contourArea just to debug)
output:

Contour area: 193.0
Contour area: 197.5
Contour area: 110.0
[%{}, %{}, %{}]

Am I doing something wrong, or is this an issue on the bindings side?
Thanks for the help !

EDIT:
changing binaryImage to false did not change anything

Showing Posts 1 to 1

mortenlund

mortenlund

This is my experience as well.
If I cannot make it work I will make an issue for this in the Evision repo, he was very helpful to fix issues! :smiley:

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews