# Working with Vision Control

**URL:** <https://discourse.julialang.org/t/working-with-vision-control/16421>\
**Category:** New to Julia\
**Tags:** python\
**Created:** [October 16, 2018, 7:00pm UTC](https://discourse.julialang.org/t/working-with-vision-control/16421 "2018-10-16T19:00:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![hasanOryx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasanoryx/32/5373_2.png) [@hasanOryx](https://discourse.julialang.org/u/hasanOryx)\
**Post date:** [October 16, 2018, 7:00pm UTC](https://discourse.julialang.org/t/working-with-vision-control/16421/1 "2018-10-16T19:00:24Z")

</div>

I’m very new to `Julia`, `Python` and `OpenCV`.  
Just read this [post](https://www.pyimagesearch.com/2018/02/26/face-detection-with-opencv-and-deep-learning/?__s=durtu1sxonipjsry5cxf) and would like to convert the below `python` into `Julia`

Any help!

```julia
# USAGE
# python detect_faces.py --image rooster.jpg --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
	help="path to input image")
ap.add_argument("-p", "--prototxt", required=True,
	help="path to Caffe 'deploy' prototxt file")
ap.add_argument("-m", "--model", required=True,
	help="path to Caffe pre-trained model")
ap.add_argument("-c", "--confidence", type=float, default=0.5,
	help="minimum probability to filter weak detections")
args = vars(ap.parse_args())

# load our serialized model from disk
print("[INFO] loading model...")
net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"])

# load the input image and construct an input blob for the image
# by resizing to a fixed 300x300 pixels and then normalizing it
image = cv2.imread(args["image"])
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0,
	(300, 300), (104.0, 177.0, 123.0))

# pass the blob through the network and obtain the detections and
# predictions
print("[INFO] computing object detections...")
net.setInput(blob)
detections = net.forward()

# loop over the detections
for i in range(0, detections.shape[2]):
	# extract the confidence (i.e., probability) associated with the
	# prediction
	confidence = detections[0, 0, i, 2]

	# filter out weak detections by ensuring the `confidence` is
	# greater than the minimum confidence
	if confidence > args["confidence"]:
		# compute the (x, y)-coordinates of the bounding box for the
		# object
		box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
		(startX, startY, endX, endY) = box.astype("int")
 
		# draw the bounding box of the face along with the associated
		# probability
		text = "{:.2f}%".format(confidence * 100)
		y = startY - 10 if startY - 10 > 10 else startY + 10
		cv2.rectangle(image, (startX, startY), (endX, endY),
			(0, 0, 255), 2)
		cv2.putText(image, text, (startX, y),
			cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)

# show the output image
cv2.imshow("Output", image)
cv2.waitKey(0)

```

---

<div class="post-metadata">

**Author:** ![tkoolen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkoolen/32/1603_2.png) [@tkoolen](https://discourse.julialang.org/u/tkoolen)\
**Post date:** [October 16, 2018, 8:40pm UTC](https://discourse.julialang.org/t/working-with-vision-control/16421/2 "2018-10-16T20:40:46Z")

</div>

What have you tried / where are you stuck?

---

<div class="post-metadata">

**Author:** ![Palli](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/palli/32/3380_2.png) [@Palli](https://discourse.julialang.org/u/Palli)\
**Post date:** [October 16, 2018, 9:30pm UTC](https://discourse.julialang.org/t/working-with-vision-control/16421/3 "2018-10-16T21:30:52Z")

</div>

You should be able to use:

> **[GitHub - maxruby/OpenCV.jl: The OpenCV (C++) interface for Julia](https://github.com/maxruby/OpenCV.jl)**
>
> The OpenCV (C++) interface for Julia. Contribute to maxruby/OpenCV.jl development by creating an account on GitHub.

with Julia 0.6, but if you want to use Julia 1.0 (now or eventually), I’m not sure will work, as it may not yet be supported; because that package relies in Cxx.jl and it may be stuck on LLVM dependency. Note, at least that dependency may work on Julia master (that issue is merged), and thus will I guess by Julia 1.1.

However, you may not need to translate this (or some other Python) code at all, as you’re supposed to be able to reuse all Python code, with PyCall.jl (see also pyjulia for calling the other way).

That (way) should work in Julia 1.0.
