| """ |
| Copyright (c) 2019, OptoFidelity OY |
| |
| Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: |
| |
| 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. |
| 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. |
| 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the OptoFidelity OY. |
| 4. Neither the name of the OptoFidelity OY nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
| EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY |
| DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| """ |
| import cv2 |
| import numpy as np |
| |
| |
| # BGR color. |
| COLOR = (251, 220, 162) |
| |
| |
| def mm_to_px(width_mm, width_px, pos_mm): |
| return int(round(pos_mm * width_px / width_mm)) |
| |
| |
| def create_dut_tap_image(dut, tap_x, tap_y, dir_x=0, dir_y=0, distance=0, num_fingers=1): |
| image = np.zeros(shape=[dut.height_px, dut.width_px, 3], dtype=np.uint8) |
| |
| for i in range(num_fingers): |
| x = mm_to_px(dut.width, dut.width_px, tap_x + dir_x * distance * i) |
| y = mm_to_px(dut.height, dut.height_px, tap_y + dir_y * distance * i) |
| |
| image = cv2.circle(image, (x, y), radius=50, color=COLOR, thickness=2) |
| |
| return image |
| |
| |
| def create_dut_swipe_image(dut, x1, y1, x2, y2, dir_x=0, dir_y=0, distance=0, num_fingers=1): |
| image = np.zeros(shape=[dut.height_px, dut.width_px, 3], dtype=np.uint8) |
| |
| for i in range(num_fingers): |
| line_x1 = mm_to_px(dut.width, dut.width_px, x1 + dir_x * distance * i) |
| line_y1 = mm_to_px(dut.height, dut.height_px, y1 + dir_y * distance * i) |
| |
| line_x2 = mm_to_px(dut.width, dut.width_px, x2 + dir_x * distance * i) |
| line_y2 = mm_to_px(dut.height, dut.height_px, y2 + dir_y * distance * i) |
| |
| image = cv2.arrowedLine(image, (line_x1, line_y1), (line_x2, line_y2), color=COLOR, thickness=2, tipLength=0.1) |
| |
| return image |