<p>虽然业主已经得到了答案,但还是愿意分享@Priya的建议。试着在下面的步骤中实现,如果是错的请告诉我,谢谢。在</p>
<p>1)创建3个条码,分别以R、G、B为背景着色。<br/>
2) 从生成的条形码中提取R、G、B通道并合并在一起。<br/>
3) 将RGB条形码转换为CMYK颜色空间。<br/></p>
<pre><code>import pyqrcode
import cv2
import numpy as np
from PIL import Image
bigcode_r = pyqrcode.create('This is red', error='L', version=2,mode='binary')
bigcode_r.png('bigcode_r.png', scale=12, module_color=[0, 0, 0], background = [0xff,0,0])
bigcode_g = pyqrcode.create('This is green', error='L', version=2, mode='binary')
bigcode_g.png('bigcode_g.png', scale=12, module_color=[0, 0, 0], background = [0,0xff,0])
bigcode_b = pyqrcode.create('This is blue', error='L', version=2, mode='binary')
bigcode_b.png('bigcode_b.png', scale=12, module_color=[0, 0, 0], background = [0,0,0xff])
img_r = cv2.imread('bigcode_r.png')
img_g = cv2.imread('bigcode_g.png')
img_b = cv2.imread('bigcode_b.png')
merge_rgb = cv2.merge((img_b[:,:,0], img_g[:,:,1], img_r[:,:,2]))
#print(k.shape)
cv2.imshow('merge_rgb',merge_rgb)
cv2.imwrite('merge_rgb.jpg', merge_rgb)
#img_str = cv2.imencode('.jpg', merge_rgb)[1].tostring()
#imgpil = Image.open(BytesIO(img_str))
imgpil = Image.open('merge_rgb.jpg')
cmyk_image = imgpil.convert('CMYK')
cmyk_image.save('cmyk_image.jpg')
cmyk_image = cv2.imread('cmyk_image.jpg')
cv2.imshow('cmyk_image',cmyk_image)
cv2.waitKey(0)
</code></pre>
<p><a href="https://i.stack.imgur.com/ivkyZ.png" rel="nofollow noreferrer">Generated barcode</a></p>