{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import cv2\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "im1 = cv2.imread('data/src/lena.jpg')\n", "im2 = cv2.imread('data/src/rocket.jpg')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_v = cv2.vconcat([im1, im1])\n", "cv2.imwrite('data/dst/opencv_vconcat.jpg', im_v)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_v_np = np.tile(im1, (2, 1, 1))\n", "cv2.imwrite('data/dst/opencv_vconcat_np.jpg', im_v_np)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def vconcat_resize_min(im_list, interpolation=cv2.INTER_CUBIC):\n", " w_min = min(im.shape[1] for im in im_list)\n", " im_list_resize = [cv2.resize(im, (w_min, int(im.shape[0] * w_min / im.shape[1])), interpolation=interpolation)\n", " for im in im_list]\n", " return cv2.vconcat(im_list_resize)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_v_resize = vconcat_resize_min([im1, im2, im1])\n", "cv2.imwrite('data/dst/opencv_vconcat_resize.jpg', im_v_resize)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_h = cv2.hconcat([im1, im1])\n", "cv2.imwrite('data/dst/opencv_hconcat.jpg', im_h)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_h_np = np.tile(im1, (1, 2, 1))\n", "cv2.imwrite('data/dst/opencv_hconcat_np.jpg', im_h_np)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def hconcat_resize_min(im_list, interpolation=cv2.INTER_CUBIC):\n", " h_min = min(im.shape[0] for im in im_list)\n", " im_list_resize = [cv2.resize(im, (int(im.shape[1] * h_min / im.shape[0]), h_min), interpolation=interpolation)\n", " for im in im_list]\n", " return cv2.hconcat(im_list_resize)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_h_resize = hconcat_resize_min([im1, im2, im1])\n", "cv2.imwrite('data/dst/opencv_hconcat_resize.jpg', im_h_resize)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def concat_tile(im_list_2d):\n", " return cv2.vconcat([cv2.hconcat(im_list_h) for im_list_h in im_list_2d])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im1_s = cv2.resize(im1, dsize=(0, 0), fx=0.5, fy=0.5)\n", "im_tile = concat_tile([[im1_s, im1_s, im1_s, im1_s],\n", " [im1_s, im1_s, im1_s, im1_s],\n", " [im1_s, im1_s, im1_s, im1_s]])\n", "cv2.imwrite('data/dst/opencv_concat_tile.jpg', im_tile)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_tile_np = np.tile(im1_s, (3, 4, 1))\n", "cv2.imwrite('data/dst/opencv_concat_tile_np.jpg', im_tile_np)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def concat_tile_resize(im_list_2d, interpolation=cv2.INTER_CUBIC):\n", " im_list_v = [hconcat_resize_min(im_list_h, interpolation=cv2.INTER_CUBIC) for im_list_h in im_list_2d]\n", " return vconcat_resize_min(im_list_v, interpolation=cv2.INTER_CUBIC)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "im_tile_resize = concat_tile_resize([[im1],\n", " [im1, im2, im1, im2, im1],\n", " [im1, im2, im1]])\n", "cv2.imwrite('data/dst/opencv_concat_tile_resize.jpg', im_tile_resize)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }