生成彩色cmy qr图像时出错

2024-10-05 11:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须生成3个背景颜色为青色、洋红和黄色的QR图像,并将它们合并以生成CMY彩色QR,如图1所示。现在在生成图像之后,使用cv2.merge将它们合并,将这些图像转换为灰色图像,然后合并操作将得到图像2而不是图像1(忽略查找器模式的颜色)。我使用的是python2.7,opencv3.0。不知道我做错了什么。请帮我离开这里。提前谢谢。在

Snapshot1

Snapshot2

我使用的代码如下:

import pyqrcode
import cv2
bigcode = pyqrcode.create('When I say it is you', error='L', version=2,mode='binary')
bigcode.png('new1.png', scale=6, module_color=[0, 0, 0], background = [0xff,0xff,0])
bigcode1 = pyqrcode.create('peace that triumphant over war ', error='L', version=2, mode='binary')
bigcode1.png('new2.png', scale=6, module_color=[0, 0, 0], background = [0xff,0,0xff])
bigcode2 = pyqrcode.create('Love that conquers hate ', error='L', version=2, mode='binary')
bigcode2.png('new3.png', scale=6, module_color=[0, 0, 0], background = [0,0xff,0xff])
bigcode.show()
b = bigcode1.show()
c = bigcode2.show()
img1 = cv2.imread('C:/New folder (2)/new1.png')
img2 = cv2.imread('C:/New folder (2)/new2.png')
img3 = cv2.imread('C:/New folder (2)/new3.png')
gray_img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
cv2.imshow('k1',gray_img1)         
gray_img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

gray_img3 = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY)

k = cv2.merge([gray_img1,gray_img2,gray_img3])

cv2.imshow('k',k)
cv2.imwrite('k.png',k)

cv2.waitKey(0)

Tags: 图像pngmodeversioncreateerrorcv2img1
2条回答

不要生成c,m,y,k色QR,试着在cmyk颜色空间中转换rgb。这将有助于产生正确的结果。在

虽然业主已经得到了答案,但还是愿意分享@Priya的建议。试着在下面的步骤中实现,如果是错的请告诉我,谢谢。在

1)创建3个条码,分别以R、G、B为背景着色。
2) 从生成的条形码中提取R、G、B通道并合并在一起。
3) 将RGB条形码转换为CMYK颜色空间。

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)

Generated barcode

相关问题 更多 >

    热门问题