Saya mempunyai imej di bawah dan saya mahu menindih tampalan hitam di bahagian paling kanan imej. Jadi saya mengubah saiz kedua-dua imej kepada saiz tertentu dalam kod di bawah dan hanya mendapat bahagian bukan putih tindanan dan menampalnya pada koordinat x,y tertentu tetapi tidak mendapat hasil yang diharapkan. Saya mencari cv2.addweighted
tetapi tidak menemui sebarang pilihan untuk menentukan pilihan untuk menggunakan koordinat tindanan tampal.
Bolehkah sesiapa membimbing saya tentang cara melaksanakan ini dalam cv2?
vr_overlay = "/Users/templates/vertical_overlay.png" show_image = "/Users/templates/image_3.png" vr_overlay_co = (0, 0, 100, 412) img_size = (0, 0, 440, 412) img = cv2.imread(show_image) img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) v_overlay = cv2.imread(vr_overlay) resize_v_overlay = cv2.resize(v_overlay, (vr_overlay_co[2], vr_overlay_co[3])) plt.imshow(resize_v_overlay ,cmap='gray') plt.axis('off') plt.show() resize_img = cv2.resize(img_rgb, (img_size[2], img_size[3])) plt.imshow(resize_img ,cmap='gray') plt.axis('off') plt.show() resize_img[vr_overlay_co[1]: vr_overlay_co[1] + vr_overlay_co[3],vr_overlay_co[0]: vr_overlay_co[0] + vr_overlay_co[2]] = np.where(resize_v_overlay != [0, 0, 0], resize_img[vr_overlay_co[1]: vr_overlay_co[1] + vr_overlay_co[3], vr_overlay_co[0]: vr_overlay_co[0] + vr_overlay_co[2],], resize_v_overlay) plt.imshow(resize_img ,cmap='gray') plt.axis('off') plt.show()
Hasil yang dijangkakan:
Berikut adalah satu cara untuk melakukannya dalam python/opencv.
(Saya perasan bahawa imej yang anda siarkan bukan saiz yang anda katakan, terutamanya kecerunan. Jadi pemprosesan tambahan diperlukan untuk memadankan saiz imej. Juga imej kecerunan mempunyai sempadan putih, yang saya ragu anda mahu.)
Masukkan:
Kecerunan (dengan sempadan putih):
import cv2 import numpy as np # read the image img = cv2.imread('people.png') hh, ww = img.shape[:2] # read the small gradient grad = cv2.imread('small_gradient.png') hg, wg = grad.shape[:2] # create white image the size of the image # then insert gradient on right side while trimming off excess white from right side of gradient ox = ww-wg+1 grad2 = np.full_like(img, (255,255,255)) grad2[0:hh, ox:ww-9+1] = grad[0:hg-1, 0:wg-9] # blend the img with grad2 via multiply #result = img.astype(np.float32) * grad2.astype(np.float32) / 255 #result = result.clip(0,255).astype(np.uint8) #or scale = 1/255 result = cv2.multiply(img, grad2, scale=scale) # save results cv2.imwrite('people_gradient.png', result) # show results cv2.imshow('result', result) cv2.waitKey(0)
Atas ialah kandungan terperinci Bagaimana untuk menindih imej ke bahagian tertentu imej lain dalam opencv. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!