मैंने एक छवि पढ़ी:

img = cv2.imread("sky.png", 1)

अब, मैं प्रत्येक चैनल के लिए प्रत्येक कॉलम में एक पिक्सेल जोड़ना चाहता हूं। जिस तरह से मैंने इसका प्रयास किया वह इस प्रकार है:

img[row_1, :, 0] = np.insert(img[row_1,:,0], column_1, some_value)
img[row_1, :, 1] = np.insert(img[row_1,:,1], column_1, some_value)
img[row_1, :, 2] = np.insert(img[row_1,:,2], column_1, some_value)

क्या ऐसा करने का कोई बेहतर तरीका है, प्रत्येक चैनल को अलग से लिखने के लिए?

अपडेट करें: जैसा कि मैंने उल्लेख किया है, कि मैं एक नया कॉलम जोड़ना चाहता हूं, जो कि 4x4 छवि है, 4x5 छवि में रूपांतरित हो जाता है। प्रत्येक पिक्सेल का मान अलग होता है और स्तंभों का क्रम भी निश्चित नहीं होता है। उदाहरण के लिए, पहला पिक्सेल 3 कॉलम में डाला जाता है और दूसरा पिक्सेल 1 कॉलम में डाला जाता है और इसी तरह (कॉलम के पूर्व निर्धारित सेट का उपयोग करके)

उदाहरण:

[
  [1,2,3,4],
  [4,5,6,7],
  [8,9,10,11]
]

ऊपर एक 3x4 छवि है (वास्तव में एक 3 चैनल छवि होगी)। मैं [०,२] , [१,१], [२,४] पर पिक्सेल जोड़कर इसे ३x५ छवि में बदलना चाहता हूं

आउटपुट तब बन जाता है:

[
   [1,2, new-pixel-a, 3, 4],
   [4,new-pixel-b, 5, 6, 7]
   [8, 9, 10, 11, new-pixel-c]
]

तो मुझे एक नई छवि मिलती है, (3, 5)

2
Amanda 2 अक्टूबर 2019, 10:13

1 उत्तर

सबसे बढ़िया उत्तर

NumPy के insert विधि, मैं निम्नलिखित समाधान के साथ आऊंगा:

import cv2
import numpy as np

# Read image; output image dimensions
image = cv2.imread('N8e9S.png')
print(image.shape)

# Set up column indices where to add pixels
colIdx = np.array(image.shape[0] * np.random.rand(image.shape[0]), dtype=np.int32)

# Set up pixel values to add
pixels = np.uint8(255 * np.random.rand(image.shape[0], 3))

# Initialize separate image
newImage = np.zeros((image.shape[0], image.shape[1]+1, 3), np.uint8)

# Insert pixels at predefined locations
for i in range(colIdx.shape[0]):
    newImage[i, :, :] = np.insert(image[i, :, :], colIdx[i], pixels[i, :], axis=0)

# Output (new) image dimensions
print(newImage.shape)

# Show final image
cv2.imshow('image', image)
cv2.imshow('newImage', newImage)
cv2.waitKey(0)
cv2.destroyAllWindows()

इनपुट छवि यह एक है:

Input

अंतिम आउटपुट इस तरह दिखता है:

Output

नए छवि आयामों को सत्यापित करने के लिए आउटपुट प्रिंट करें:

(241, 300, 3)
(241, 301, 3)

उम्मीद है की वो मदद करदे!

1
HansHirse 2 अक्टूबर 2019, 11:48