def missingVideo(scModel):
    import copy
    """
    :param scModel:
    :return:
    @type scModel: ImageProjectModel
    """
    for edge in scModel.getGraph().get_edges():
        currentLink = scModel.getGraph().get_edge(edge[0], edge[1])
        successors = scModel.getGraph().successors(edge[1])
        predecessors = scModel.getGraph().predecessors(edge[1])
        if currentLink['op'] == 'AddAudioSample':
            sourceim, source = scModel.getGraph().get_image(edge[0])
            im, dest = scModel.getGraph().get_image(edge[1])
            sourcemetadata = ffmpeg_api.get_meta_from_video(source, show_streams=True)[0]
            destmetadata = ffmpeg_api.get_meta_from_video(dest, show_streams=True)[0]
            if len(sourcemetadata) > 0:
                sourcevidcount = len([idx for idx, val in enumerate(sourcemetadata) if val['codec_type'] != 'audio'])
            if len(destmetadata) > 0:
                destvidcount = len([x for x in (idx for idx, val in enumerate(destmetadata) if val['codec_type'] != 'audio')])
            if sourcevidcount != destvidcount:
                if not isSuccessor(scModel, successors, edge[1], ['AntiForensicCopyExif', 'OutputMP4', 'Donor']):
                    raise ValueError('Cannot correct AddAudioSample for edge {} to {} due to successor node'.format(
                        edge[0], edge[1]
                    ))
                predecessors = [pred for pred in predecessors if pred != edge[0]]
                if len(predecessors) == 0:
                    donor = scModel.getBaseNode(edge[1])
                else:
                    donor = predecessors[0]
                args= dict() if 'arguments' not  in currentLink else copy.copy(currentLink['arguments'])
                args['donor'] = donor
                plugins.callPlugin('OverwriteAudioStream',sourceim,source,dest,donor=donor)
Пример #2
0
def rerunexif(project):
    """
    Save error report, project properties, composites, and donors
    :param sm: scenario model
    """
    sm = scenario_model.ImageProjectModel(project)
    plugin_map = {
        'AntiForensicExifQuantizationTable': 'CompressAs',
        'AntiForensicCopyExif': 'ExifMetaCopy',
        'AntiForensicEditExif': 'ExifGPSChange',
        'OutputTif': 'TIFF'
    }
    for edge_id in sm.getGraph().get_edges():
        edge = sm.getGraph().get_edge(edge_id[0], edge_id[1])
        # if a compression type operation
        if edge['op'] in [
                'AntiForensicExifQuantizationTable', 'AntiForensicCopyExif',
                'AntiForensicEditExif', 'OutputTif'
        ]:
            # has donor
            preds = [
                pred for pred in sm.getGraph().predecessors(edge_id[1])
                if pred != edge_id[0]
            ]
            if len(preds) > 0:
                donor_node = sm.getGraph().get_node(preds[0])
                target_node = sm.getGraph().get_node(edge_id[1])
                im, source_filename = sm.getImageAndName(edge_id[0])
                target_filenanme = os.path.join(sm.get_dir(),
                                                target_node['file'])
                plugin_name = plugin_map[edge['op']]
                kwargs = {
                    'donor': os.path.join(sm.get_dir(), donor_node['file']),
                    'rotate': 'yes'
                }
                doc = getValue(edge, 'arguments.degrees of change')
                if doc is not None:
                    kwargs['degrees of change'] = doc
                if plugin_name == 'TIFF':
                    exif.runexif([
                        '-P', '-q', '-m', '-TagsFromFile', donor_node['file'],
                        '-all:all', '-unsafe', target_filenanme
                    ])
                    createtime = exif.getexif(
                        target_filenanme,
                        args=['-args', '-System:FileCreateDate'],
                        separator='=')
                    if createtime is not None and '-FileCreateDate' in createtime:
                        exif.runexif([
                            '-overwrite_original', '-P', '-q', '-m',
                            '-System:fileModifyDate=' +
                            createtime['-FileCreateDate'], target_filenanme
                        ])
                else:
                    plugins.callPlugin(plugin_name, im, source_filename,
                                       target_filenanme, **kwargs)
            sm.reproduceMask(edge_id=edge_id)
    sm.save()
Пример #3
0
 def test_drop_then_add(self):
     filename = self.locateFile('tests/videos/sample1.mov')
     filename_output1 = os.path.join(
         os.path.dirname(os.path.abspath(filename)), 'sample_out1a.avi')
     kwargs = {
         'Start Time': 100,
         'seconds to drop': 2,
         'codec': 'XVID',
         'save histograms': 'yes'
     }
     args, error = plugins.callPlugin('FlowDrivenVideoFrameDrop', None,
                                      filename, filename_output1, **kwargs)
     self.filesToKill.append(filename_output1)
     self.assertTrue(error is None)
     frames1 = int(
         get_channel_data(
             ffmpeg_api.get_meta_from_video(filename, show_streams=True)[0],
             'video')[0]['nb_frames'])
     frames2 = int(
         get_channel_data(
             ffmpeg_api.get_meta_from_video(filename_output1,
                                            show_streams=True)[0],
             'video')[0]['nb_frames'])
     diff = frames1 - frames2
     self.assertTrue(diff > 0)
     diff_time = int(args['End Time']) - int(args['Start Time']) + 1
     self.assertEqual(diff, diff_time)
     filename_output2 = os.path.join(
         os.path.dirname(os.path.abspath(filename)), 'sample_out2a.avi')
     args['codec'] = 'XVID'
     if getValue(args, 'Frames to Add', 0) < 1:
         args['Frames to Add'] = 1
     print str(args)
     args, error = plugins.callPlugin('FlowDrivenVideoTimeWarp', None,
                                      filename_output1, filename_output2,
                                      **args)
     self.filesToKill.append(filename_output2)
     self.assertTrue(error is None)
     frames1 = int(
         get_channel_data(
             ffmpeg_api.get_meta_from_video(filename_output1,
                                            show_streams=True)[0],
             'video')[0]['nb_frames'])
     frames2 = int(
         get_channel_data(
             ffmpeg_api.get_meta_from_video(filename_output2,
                                            show_streams=True)[0],
             'video')[0]['nb_frames'])
     diff = frames2 - frames1
     self.assertTrue(diff > 0)
     diff_time = int(args['End Time']) - int(args['Start Time']) + 1
     print str(args)
     self.assertEqual(diff, diff_time)
Пример #4
0
def main():
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('--plugin', required=True, help='JSON File')
    parser.add_argument('--args',
                        required=True,
                        help='number of projects to build')
    args = parser.parse_args()
    arguments_list = args.args.split(',')
    arguments = {a.split(':')[0]: a.split(':')[1] for a in arguments_list}
    img = image_wrap.openImageFile(arguments['inputimage'])
    plugins.loadPlugins()
    plugins.callPlugin(args.plugin, img, arguments['inputimage'],
                       arguments['outputimage'], **arguments)
Пример #5
0
 def test_seam_carve(self):
     img_wrapper = image_wrap.openImageFile(self.locateFile('tests/images/test_project5.jpg'))
     img = img_wrapper.to_array()
     mask = np.zeros(img.shape).astype('uint8')
     cv2.circle(mask, (img.shape[0]/8,img.shape[1]/8), img.shape[0]/16, (255, 0, 0), -1)
     cv2.circle(mask, (img.shape[0] *5/ 8, img.shape[1] *5/ 8), img.shape[0] / 16, (0, 255, 0), -1)
     mask_wrapper = image_wrap.ImageWrapper(mask)
     mask_output = tempfile.mktemp(prefix='mstcr', suffix='.png', dir='.')
     self.addFileToRemove(mask_output)
     mask_wrapper.save(mask_output)
     target_wrapper = image_wrap.ImageWrapper(img)
     filename  = self.locateFile('tests/images/test_project5.jpg')
     filename_output = tempfile.mktemp(prefix='mstcr', suffix='.jpg', dir='.')
     self.addFileToRemove(filename_output)
     target_wrapper.save(filename_output)
     args,error = plugins.callPlugin('SeamCarve',
                         img_wrapper,
                         filename,
                         filename_output,
                         inputmaskname=os.path.abspath(mask_output),
                         percentage_height=0.95,
                         percentage_width=0.95)
     output_files = args['output_files']
     self.assertTrue('column adjuster' in output_files and os.path.exists(output_files['column adjuster']))
     self.assertTrue('row adjuster' in output_files and os.path.exists(output_files['row adjuster']))
     self.assertTrue('plugin mask' in output_files and os.path.exists(output_files['plugin mask']))
     self.assertTrue('neighbor mask' in output_files and os.path.exists(output_files['neighbor mask']))
     for v in output_files.values():
         os.remove(v)
Пример #6
0
def run_plugin(argv=None):
    import argparse
    import itertools

    parser = argparse.ArgumentParser(description='')
    parser.add_argument('--plugin', help='name of plugin', required=True)
    parser.add_argument('--input', help='base image or video', required=True)
    parser.add_argument('--output',
                        help='result image or video',
                        required=True)
    parser.add_argument(
        '--arguments',
        nargs='+',
        default={},
        help='Additional operation/plugin arguments e.g. rotation 60')
    args = parser.parse_args()

    op = software_loader.getOperation(getOperation(args.plugin)['name'])
    parsedArgs = dict(
        itertools.izip_longest(*[iter(args.arguments)] * 2, fillvalue=""))
    for key in parsedArgs:
        parsedArgs[key] = validateAndConvertTypedValue(
            key, parsedArgs[key], op, skipFileValidation=False)

    loadPlugins()
    args, msg = callPlugin(args.plugin, openImageFile(args.input), args.input,
                           args.output, **parsedArgs)
    if msg is not None:
        print(msg)
    if args is not None:
        print('Results:')
        print(str(args))
Пример #7
0
    def test_rgb(self):
        filename = self.locateFile('tests/images/test_project5.jpg')
        img_wrapper = image_wrap.openImageFile(filename)
        img = img_wrapper.to_array()
        target_wrapper = image_wrap.ImageWrapper(img)
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        target_wrapper.save(filename_output)

        args, error = plugins.callPlugin('SelectRegion',
                                         img_wrapper,
                                         filename,
                                         filename_output,
                                         alpha='yes')
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(sum(sum(output[:, :, 3])) > 255)
        x, y, w, h = widthandheight(output[:, :, 3])
        if x > 1:
            self.assertTrue(sum(sum(output[:, 0:x - 1, 3])) == 0)
        if y > 1:
            self.assertTrue(sum(sum(output[0:y - 1, :, 3])) == 0)
        self.assertTrue(sum(sum(output[y + h + 1:, x + w + 1:, 3])) == 0)
        self.assertEqual(output.shape[0], img.shape[0])
        self.assertEqual(output.shape[1], img.shape[1])
        self.assertTrue('paste_x' in args and args['paste_x'] > 0)
        self.assertTrue('paste_y' in args and args['paste_y'] > 0)
Пример #8
0
    def test_something(self):
        img = numpy.random.randint(0, 255, (500, 500, 3), dtype='uint8')
        mask = numpy.zeros((500, 500), dtype='uint8')
        mask[30:50, 30:50] = 255
        self.assertTrue(
            sum(sum(sum(img[30:50, 30:50] - img[400:420, 300:320]))) > 0)
        img_wrapper = image_wrap.ImageWrapper(img)
        target_wrapper = image_wrap.ImageWrapper(mask)
        mask_wrapper = image_wrap.ImageWrapper(mask)
        filename = tempfile.mktemp(prefix='mstc', suffix='.png', dir='.')
        filename_mask = tempfile.mktemp(prefix='mstcm', suffix='.png', dir='.')
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename, filename_mask, filename_output])
        img_wrapper.save(filename)
        mask_wrapper.save(filename_mask)
        target_wrapper.save(filename_output)

        args, error = plugins.callPlugin('DesignPasteClone',
                                         img_wrapper,
                                         filename,
                                         filename_output,
                                         inputmaskname=filename_mask,
                                         paste_x=300,
                                         paste_y=400)
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(
            sum(sum(sum(img[30:50, 30:50] - output[400:420, 300:320]))) == 0)
Пример #9
0
 def test_typical(self):
     img_wrapper = image_wrap.openImageFile(
         self.locateFile('tests/images/test.png'))
     img = img_wrapper.to_array()
     img_wrapper = image_wrap.ImageWrapper(img)
     target_wrapper = image_wrap.ImageWrapper(img)
     filename = self.locateFile('tests/images/test.png')
     filename_output = tempfile.mktemp(prefix='mstcr',
                                       suffix='.png',
                                       dir='.')
     self.filesToKill.extend([filename_output])
     target_wrapper.save(filename_output)
     args, error = plugins.callPlugin('SmartMaskSelector',
                                      img_wrapper,
                                      filename,
                                      filename_output,
                                      smallw=100,
                                      smallh=100,
                                      mediumw=150,
                                      mediumh=150,
                                      largew=200,
                                      largeh=200,
                                      size=2,
                                      op=2)
     wrapper = image_wrap.openImageFile(filename_output)
     output = wrapper.to_array()
     self.assertTrue(img_wrapper.size[1] == wrapper.size[1])
     self.assertTrue(img_wrapper.size[0] == wrapper.size[0])
     self.assertTrue(len(output.shape) == 2)
     totalsize = sum(sum(output / 255))
     print totalsize
     self.assertTrue(totalsize <= (1.5 * 22500))
     self.assertTrue(totalsize >= (22500 * 0.5))
     self.assertTrue('paste_x' in args and args['paste_x'] > 0)
     self.assertTrue('paste_y' in args and args['paste_y'] > 0)
Пример #10
0
 def test_something(self):
     filename = self.locateFile('tests/images/test_project1.jpg')
     wrapper = image_wrap.openImageFile(filename)
     filename_output = tempfile.mktemp(prefix='mstcr',
                                       suffix='.png',
                                       dir='.')
     self.addFileToRemove(filename_output)
     img = numpy.asarray(wrapper)
     image_wrap.ImageWrapper(img).save(filename_output)
     args, error = plugins.callPlugin('WienerFilter',
                                      wrapper,
                                      filename,
                                      filename_output,
                                      percentageChange=0.5)
     wrapper = image_wrap.openImageFile(filename_output)
     output = wrapper.to_array()
     self.assertEqual(output.shape, img.shape)
     diff = abs(output - img)
     finaldiff = numpy.zeros((diff.shape[0], diff.shape[1]))
     for i in range(3):
         finaldiff = finaldiff + diff[:, :, i]
     finaldiff[finaldiff > 0] = 1
     self.assertTrue(
         sum(sum(finaldiff)) /
         (finaldiff.shape[0] * finaldiff.shape[1]) > 0.8)
Пример #11
0
    def test_snap(self):
        img = numpy.zeros((500, 500), dtype='uint8')
        wrapper = image_wrap.ImageWrapper(img)
        filename = tempfile.mktemp(prefix='mstc', suffix='.png', dir='.')
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.append(filename)
        wrapper.save(filename)
        self.filesToKill.append(filename_output)
        image_wrap.ImageWrapper(img).save(filename_output)
        args, error = plugins.callPlugin('CropSelector',
                                         wrapper,
                                         filename,
                                         filename_output,
                                         percentage_width=0.1,
                                         percentage_height=0.1,
                                         eightbit_boundary='yes')
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()

        self.assertEqual(output.shape, img.shape)
        self.assertTrue('crop_x' in args and args['crop_x'] <= 56)
        self.assertTrue('crop_y' in args and args['crop_y'] <= 56)
        self.assertTrue('crop_width' in args and args['crop_width'] == 56)
        self.assertTrue('crop_height' in args and args['crop_height'] == 56)
        self.assertTrue(args['crop_y'] % 8 == 0)
        self.assertTrue(args['crop_x'] % 8 == 0)
        self.assertTrue(
            output[-(args['crop_height'] - args['crop_y'] + 1),
                   -(args['crop_width'] - args['crop_x'] + 1)] == 255)
        self.assertTrue(
            output[-(args['crop_height'] - args['crop_y'] - 1),
                   -(args['crop_width'] - args['crop_x'] - 1)] == 0)
Пример #12
0
 def test_something(self):
     img = numpy.random.randint(0, 255, (500, 500, 3), dtype='uint8')
     wrapper = image_wrap.ImageWrapper(img)
     filename = tempfile.mktemp(prefix='mstc', suffix='.png', dir='.')
     filename_output = tempfile.mktemp(prefix='mstcr',
                                       suffix='.png',
                                       dir='.')
     self.filesToKill.append(filename)
     wrapper.save(filename)
     self.filesToKill.append(filename_output)
     image_wrap.ImageWrapper(img).save(filename_output)
     args, error = plugins.callPlugin('MedianBlur',
                                      wrapper,
                                      filename,
                                      filename_output,
                                      kernelSize=25,
                                      percentageChange=0.5)
     wrapper = image_wrap.openImageFile(filename_output)
     output = wrapper.to_array()
     self.assertEqual(output.shape, img.shape)
     diff = abs(output - img)
     finaldiff = numpy.zeros((500, 500))
     for i in range(3):
         finaldiff = finaldiff + diff[:, :, i]
     finaldiff[finaldiff > 0] = 1
     self.assertTrue(abs(sum(sum(finaldiff)) - 62500) < 100)
Пример #13
0
 def test_all(self):
     filename = self.locateFile("tests/videos/sample1.mov")
     filename_output = filename.replace('.mov', '_ds.mov')
     self.filesToKill.append(filename_output)
     args, error = plugins.callPlugin('ApplyLensDistortion',
                                      None,
                                      filename,
                                      filename_output,
                                      threshold=0.8)
     self.assertEqual(None, error)
Пример #14
0
    def test_plugin(self):
        filename= self.locateFile('tests/videos/sample1.mov')
        filename_output = os.path.join(os.path.dirname(os.path.abspath(filename)), 'sample_out1a.avi')

        self.filesToKill.append(filename_output)
        args, error = plugins.callPlugin('FrameDuplicateDrop',None,filename,filename_output,Threshold=3)
        capin = video_tools.cv2api_delegate.videoCapture(filename)
        capout = video_tools.cv2api_delegate.videoCapture(filename_output)
        self.assertEqual(None, error)
        lenin = capin.get(video_tools.cv2api_delegate.prop_frame_count)
        lenout = capout.get(video_tools.cv2api_delegate.prop_frame_count)
        self.assertGreater(lenin,lenout)
Пример #15
0
    def test_boundary(self):
        img = numpy.zeros((500, 540), dtype='uint8')
        wrapper = image_wrap.ImageWrapper(img)
        filename = tempfile.mktemp(prefix='mstc', suffix='.png', dir='.')
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.append(filename)
        wrapper.save(filename)
        self.filesToKill.append(filename_output)
        image_wrap.ImageWrapper(img).save(filename_output)
        args, error = plugins.callPlugin('CropSelector',
                                         wrapper,
                                         filename,
                                         filename_output,
                                         percentage_width=0.001,
                                         percentage_height=0.0001,
                                         eightbit_boundary='yes')
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()

        img = numpy.zeros((500, 540), dtype='uint8')
        wrapper = image_wrap.ImageWrapper(img)
        filename = tempfile.mktemp(prefix='mstc', suffix='.png', dir='.')
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.append(filename)
        wrapper.save(filename)
        self.filesToKill.append(filename_output)
        image_wrap.ImageWrapper(img).save(filename_output)
        args, error = plugins.callPlugin('CropSelector',
                                         wrapper,
                                         filename,
                                         filename_output,
                                         percentage_width=1,
                                         percentage_height=0.0001,
                                         eightbit_boundary='yes')
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
Пример #16
0
 def snap_no_division(self, wrapper, filename, filename_output):
     args, error = plugins.callPlugin('CropPermutations',
                                      wrapper,
                                      filename,
                                      filename_output,
                                      percentage_width=0.1,
                                      percentage_height=0.1,
                                      eightbit_boundary='yes')
     self.assertTrue('crop_x' in args
                     and args['crop_x']['values'] == [8, 16, 24, 32, 40])
     self.assertTrue('crop_y' in args
                     and args['crop_y']['values'] == [8, 16, 24, 32, 40])
     self.assertTrue('crop_width' in args and args['crop_width'] == 48)
     self.assertTrue('crop_height' in args and args['crop_height'] == 48)
Пример #17
0
    def test_noise(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test_project1.jpg'))
        filename_output = tempfile.mktemp(prefix='cstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        img_wrapper.save(filename_output)

        args, error = plugins.callPlugin(
            'MagickAddNoise', img_wrapper,
            self.locateFile('tests/images/test_project1.jpg'), filename_output,
            **{"Noise Type": "salt-pepper"})
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == img_wrapper.to_array().shape)
Пример #18
0
    def no_snap_division(self, wrapper, filename, filename_output):
        args, error = plugins.callPlugin('CropPermutations',
                                         wrapper,
                                         filename,
                                         filename_output,
                                         percentage_width=0.1,
                                         percentage_height=0.1,
                                         divisions_width=3,
                                         divisions_height=2)
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()

        self.assertEqual(output.shape, wrapper.image_array.shape)
        self.assertTrue('crop_x' in args
                        and args['crop_x']['values'] == [16, 32, 48])
        self.assertTrue('crop_y' in args and args['crop_y']['values'] == [25])
        self.assertTrue('crop_width' in args and args['crop_width'] == 50)
        self.assertTrue('crop_height' in args and args['crop_height'] == 50)
Пример #19
0
    def test_contrast(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test_project1.jpg'))
        filename_output = tempfile.mktemp(prefix='cstcr',
                                          suffix='_c.png',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        img_wrapper.save(filename_output)

        args, error = plugins.callPlugin(
            'Constrast',
            img_wrapper,
            self.locateFile('tests/images/test_project1.jpg'),
            filename_output,
            direction="increase")
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == img_wrapper.to_array().shape)
Пример #20
0
    def test_gamma(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test_project1.jpg'))
        filename_output = tempfile.mktemp(prefix='cstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        img_wrapper.save(filename_output)

        args, error = plugins.callPlugin(
            'ManualGammaCorrection',
            img_wrapper,
            self.locateFile('tests/images/test_project1.jpg'),
            filename_output,
            gamma=2.0)
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == img_wrapper.to_array().shape)
Пример #21
0
 def test_something(self):
     img = numpy.random.randint(0, 255, (500, 500, 3), dtype='uint8')
     img_wrapper = image_wrap.ImageWrapper(img)
     target_wrapper = image_wrap.ImageWrapper(
         numpy.zeros((500, 500, 3), dtype=numpy.uint8))
     filename = tempfile.mktemp(prefix='cstc', suffix='.png', dir='.')
     filename_output = tempfile.mktemp(prefix='cstcr',
                                       suffix='.png',
                                       dir='.')
     self.filesToKill.extend([filename, filename_output])
     img_wrapper.save(filename)
     target_wrapper.save(filename_output)
     op = plugins.getOperation('OutputPNG::Foo')
     self.assertEqual('OutputPng::Foo', op['name'])
     args, error = plugins.callPlugin('OutputPNG::Foo', img_wrapper,
                                      filename, filename_output)
     wrapper = image_wrap.openImageFile(filename_output)
     output = wrapper.to_array()
     self.assertTrue(numpy.all(img == output))
Пример #22
0
    def test_modulate(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test_project1.jpg'))
        filename_output = tempfile.mktemp(prefix='cstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        img_wrapper.save(filename_output)

        args, error = plugins.callPlugin(
            'MagickModulate',
            img_wrapper,
            self.locateFile('tests/images/test_project1.jpg'),
            filename_output,
            saturation=130,
            brightness=130)
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == img_wrapper.to_array().shape)
Пример #23
0
    def test_snap(self):
        img = numpy.zeros((500,540),dtype='uint8')
        wrapper = image_wrap.ImageWrapper(img)
        filename  = tempfile.mktemp(prefix='mstc',suffix='.png',dir='.')
        filename_output = tempfile.mktemp(prefix='mstcr', suffix='.png', dir='.')
        self.filesToKill.append(filename)
        wrapper.save(filename)
        self.filesToKill.append(filename_output)
        image_wrap.ImageWrapper(img).save(filename_output)
        args,error = plugins.callPlugin('CV2ResizeByPercent',
                            wrapper,
                           filename,
                           filename_output,
                           percentage_width = 0.9,
                           percentage_height=0.9,
                            interpolation='other' )
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()

        self.assertEqual((448,480),output.shape)
Пример #24
0
    def test_levels(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test_project1.jpg'))
        filename_output = tempfile.mktemp(prefix='cstcr',
                                          suffix='_l.png',
                                          dir='.')
        #self.filesToKill.extend([filename_output])
        img_wrapper.save(filename_output)

        args, error = plugins.callPlugin(
            'LevelCorrectionNoMask',
            img_wrapper,
            self.locateFile('tests/images/test_project1.jpg'),
            filename_output,
            blackpoint=25,
            whitepoint=75,
            gamma=1.5)
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == img_wrapper.to_array().shape)
Пример #25
0
    def test_gray(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test_project5.jpg'))
        img = img_wrapper.to_array()
        img_wrapper = image_wrap.ImageWrapper(img)
        target_wrapper = image_wrap.ImageWrapper(img)
        filename = self.locateFile('tests/images/test_project5.jpg')
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.jpg',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        target_wrapper.save(filename_output, format='JPEG')

        args, error = plugins.callPlugin('ExifGPSChange', img_wrapper,
                                         filename, filename_output)
        self.assertEqual(error, None)
        data = exif.getexif(filename)
        data_output = exif.getexif(filename_output)
        self.assertTrue(data['GPS Latitude'] != data_output['GPS Latitude'])
        self.assertTrue(data['GPS Longitude'] != data_output['GPS Longitude'])
Пример #26
0
    def test_something(self):
        img = numpy.random.randint(0, 255, (500, 500, 3), dtype='uint8')
        img_wrapper = image_wrap.ImageWrapper(img)
        target_wrapper = image_wrap.ImageWrapper(img)
        filename = tempfile.mktemp(prefix='cstc', suffix='.png', dir='.')
        filename_output = tempfile.mktemp(prefix='cstcr', suffix='.png', dir='.')
        self.filesToKill.extend([filename, filename_output])
        img_wrapper.save(filename)
        target_wrapper.save(filename_output)

        args, error = plugins.callPlugin('Crop',
                                         img_wrapper,
                                         filename,
                                         filename_output,
                                         pixel_width=50,
                                         pixel_height=50,
                                         crop_x=7,
                                         crop_y=15)
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == (450,450,3))
        self.assertTrue(numpy.all(output[0:10,0:10]==  img[15:25,7:17]))
Пример #27
0
    def test_something(self):
        img = numpy.random.randint(0, 255, (500, 400, 3), dtype='uint8')
        img_wrapper = image_wrap.ImageWrapper(img)
        target_wrapper = image_wrap.ImageWrapper(img)
        filename = tempfile.mktemp(prefix='cstc', suffix='.png', dir='.')
        filename_output = tempfile.mktemp(prefix='cstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename, filename_output])
        img_wrapper.save(filename)
        target_wrapper.save(filename_output)

        args, error = plugins.callPlugin('CV2Resize',
                                         img_wrapper,
                                         filename,
                                         filename_output,
                                         width=550,
                                         height=450,
                                         interpolation='cubic')
        wrapper = image_wrap.openImageFile(filename_output)
        output = wrapper.to_array()
        self.assertTrue(output.shape == (450, 550, 3))
Пример #28
0
 def test_something(self):
     img = numpy.zeros((500,500),dtype='uint8')
     wrapper = image_wrap.ImageWrapper(img)
     filename  = tempfile.mktemp(prefix='mstc',suffix='.png',dir='.')
     filename_output = tempfile.mktemp(prefix='mstcr', suffix='.png', dir='.')
     self.filesToKill.append(filename)
     wrapper.save(filename)
     self.filesToKill.append(filename_output)
     wrapper.save(filename_output)
     args,error = plugins.callPlugin('MaskSelector',
                         wrapper,
                        filename,
                        filename_output,
                        percentage_width = 0.1,
                         percentage_height=0.1)
     wrapper = image_wrap.openImageFile(filename_output)
     output = wrapper.to_array()
     self.assertTrue(sum(sum(output))>255)
     self.assertTrue(sum(sum(output)) < numpy.prod(output.shape))
     self.assertEqual(output.shape, img.shape)
     self.assertTrue('paste_x' in args and args['paste_x'] > 0)
     self.assertTrue('paste_y' in args and args['paste_y'] > 0)
Пример #29
0
    def test_plugin(self):
        plugins.loadPlugins()
        filename = self.locateFile("tests/videos/sample1.mov")
        filename_output = os.path.join(os.path.split(filename)[0], "sample1_out.avi")
        self.filesToKill.append(filename_output)
        file = os.path.join(os.path.split(filename)[0], "sample1.csv")
        self.filesToKill.append(file)

        args, errors = plugins.callPlugin('DroneShake',
                                          None,  #image would go here for image manipulations
                                          filename,
                                          filename_output,
                                          fps=13.53,
                                          height=360,
                                          width=480)
        #  checking to make sure there are no errors
        self.assertEqual(errors, None)

        #  Get the output video to compare the height and width
        video = cv2api_delegate.videoCapture(filename_output)
        width = int(video.get(cv2api_delegate.prop_frame_width))
        height = int(video.get(cv2api_delegate.prop_frame_height))
        self.assertTrue(int(width) == 480)
        self.assertTrue(int(height) == 360)
Пример #30
0
    def test_something(self):
        img_wrapper = image_wrap.openImageFile(
            self.locateFile('tests/images/test.tif'))
        img = img_wrapper.to_array()
        img_wrapper = image_wrap.ImageWrapper(img)
        target_wrapper = image_wrap.ImageWrapper(img)
        filename = self.locateFile('tests/images/test.tif')
        filename_output = tempfile.mktemp(prefix='mstcr',
                                          suffix='.png',
                                          dir='.')
        self.filesToKill.extend([filename_output])
        target_wrapper.save(filename_output)

        args, error = plugins.callPlugin(
            'ImageSizeSelector',
            img_wrapper,
            filename,
            filename_output,
            cameraDataFile=self.locateFile('data/camera_sizes.json'),
            pickOne='yes',
        )

        self.assertTrue('height' in args and args['height'] == 3264)
        self.assertTrue('width' in args and args['width'] == 4928)