def get_matches_using_sift(img_src, img_marker, method):
        sift = cv2.xfeatures2d.SIFT_create()
        kp1, des1 = sift.detectAndCompute(img_marker, None)
        kp2, des2 = sift.detectAndCompute(img_src, None)

        if not exists(des1) or not exists(des2):
            return None, None, None

        matches = Drawing.get_matches(des1, des2, method)
        return matches, kp1, kp2
    def get_matches_using_orb(img_src, img_marker, method):
        orb = cv2.ORB_create()
        kp1, des1 = orb.detectAndCompute(img_marker, None)
        kp2, des2 = orb.detectAndCompute(img_src, None)

        if not exists(des1) or not exists(des2):
            return None, None, None

        matches = Drawing.get_matches(des1, des2, method)
        return matches, kp1, kp2
    def match_and_render(img_src, img_marker, obj, method):

        assert method in [const.METHOD_ORB, const.METHOD_SIFT]

        min_matches = {
            const.METHOD_ORB: 15,
            const.METHOD_SIFT: 15,
        }[method]

        matches, kp1, kp2 = {
            const.METHOD_ORB: Drawing.get_matches_using_orb,
            const.METHOD_SIFT: Drawing.get_matches_using_sift,
        }[method](img_src, img_marker, const.MATCHES_BEST)

        if not matches:
            return

        if len(matches) >= min_matches:
            homography, mask = Drawing.find_homography(matches, kp1, kp2)

            if exists(homography):
                # Draw marker outline
                # Drawing.draw_marker_border(img_src, img_marker, homography)

                # Draw marker matches
                # Drawing.draw_marker_matches(img_src, img_marker, homography, method)

                # Draw projection
                Drawing.draw_projection(img_src, img_marker, homography, obj)
Exemplo n.º 4
0
    def show_preview(self):
        if not exists(self.window_manager):
            return

        if self.mirror_preview:
            mirrored_frame = np.fliplr(self._frame).copy()
            self.window_manager.show(mirrored_frame)
        else:
            self.window_manager.show(self._frame)
Exemplo n.º 5
0
    def _write_video_frame(self):
        if not self.is_writing_video:
            return

        if not exists(self._video_writer):
            video_fps = self.fps()

            if not exists(video_fps):
                return

            video_size = (int(self._capture.get(cv2.CAP_PROP_FRAME_WIDTH)),
                          int(self._capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
            self._video_writer = cv2.VideoWriter(
                self._video_filename,
                self._video_encoding,
                video_fps,
                video_size,
            )

        self._video_writer.write(self._frame)
Exemplo n.º 6
0
    def run(self):
        self._window.create()

        while self._window.is_created:
            self._capture_controller.enter_frame()
            self._frame = self._capture_controller.frame

            if not exists(self._frame):
                continue

            if exists(self._filter):
                self._filter.apply(self._frame, dst=self._frame)

            self.draw(
                contours=self._draw_contours,
                lines=self._draw_lines,
                corners=self._draw_corners,
            )

            self._capture_controller.exit_frame()
            self._window.process_events()
Exemplo n.º 7
0
    def exit_frame(self):
        if not exists(self.frame):
            self._frame_entered = False
            return

        self._count_frames()
        self.show_preview()
        self._write_image_frame()
        self._write_video_frame()

        self._frame = None
        self._frame_entered = False
Exemplo n.º 8
0
def resource(request, serial, name, res_type, medium=None):
	if int(serial) == settings.RAPE_SERIAL:
		if helpers.exists(res_type, name, medium):
			if helpers.changed(request, res_type, name, medium):
				helpers.check_dirs(res_type)
				generate_resource(request, res_type, name, medium)

			fp = open(helpers.get_output_path(request, res_type, name))
			response = HttpResponse(re.sub(r'{{HOST}}', request.META['HTTP_HOST'], fp.read()))
			fp.close()

			if settings.RAPE_CORS_ORIGIN:  response['Access-Control-Allow-Origin']  = settings.RAPE_CORS_ORIGIN
			if settings.RAPE_CORS_METHODS: response['Access-Control-Allow-Methods'] = settings.RAPE_CORS_METHODS
			if settings.RAPE_CORS_HEADERS: response['Access-Control-Allow-Headers'] = settings.RAPE_CORS_HEADERS

			response['Content-Type'] = helpers.get_content_type(res_type)
			response['Cache-Control'] = 'public, max-age=86400'

			return response
		else: raise Http404
	else:
		return HttpResponseRedirect(reverse(('raped_%s' % res_type), args=(settings.RAPE_SERIAL, name)))
 def process_events(self):
     keycode = cv2.waitKey(1)
     if exists(self.keypress_callback) and keycode != -1:
         keycode &= 0xFF
         self.keypress_callback(keycode)
Exemplo n.º 10
0
    def enter_frame(self):
        assert not self._frame_entered

        if exists(self._capture):
            self._frame_entered = self._capture.grab()
Exemplo n.º 11
0
 def is_writing_video(self):
     return exists(self._video_filename)
Exemplo n.º 12
0
 def is_writing_image(self):
     return exists(self._image_filename)
Exemplo n.º 13
0
 def frame(self):
     if exists(self._frame_entered) and not exists(self._frame):
         _, self._frame = self._capture.retrieve()
     return self._frame