onenote软件一直是用户会选择使用的一款办公软件,给用户带来了许多的帮助,让用户的笔记内容更加的清晰直观,再加上软件中的功能是很强大的,用户在使用的过程中使用自己需要......
2023-01-12
问题背景:
Qpen在画线时,可以选择画笔颜色,即QColor,一般都是选择三个参数,即R,G,B,例如黑色可以设置为QColor(0,0,0),白色即为QColor(255,255,255)。用户可以根据自己的需要进行选择颜色。
这样的画笔进行画线时即使画的比较快也不会出现中间断断续续的情况,
下面是颜色为黄色的画线展示,即QColor(255,255,0),如图:
但是Qpen还有第四个参数,即设置画笔的透明度,这个范围也是0-255.其中数字越小,颜色越亮,也可以理解为越浅。
下面是画笔设为亮度为30的画线图,即QColor(255,255,0,30):
我们可以看到画笔的颜色是比刚才浅的。
透明度越小,我们越能看到画笔下面的内容
代码示例
pen=QPen(Qt.SolidLine)#将画线设置为实线
pen.setColor(QColor(255,255,0,30))#设置画笔的颜色和透明度
pen.setWidth(self.linewidth)#设置画笔的宽度
#根据鼠标位值进行随意画线,
painter.drawLine(self.start_point,self.current_point)
想要达到的效果
想要达到画线后画线部分的像素值是稳定的,这样才方便后期的图像提取
问题分析
仅仅刚才的代码无法达到效果
当画线画的比较快时(即鼠标移动比较快时),会出现如下图情况:
显然我们直接用肉眼就可以看出来像素是不一样的。我们也可以进行像素查看,用下面代码:
importcv2
img=cv2.imread('image.jpg',1)
可以看出颜色会有较大波动,这并不是我们想要的结果
问题解决
最后解决这个问题的方式是同时让程序进行画线
即下面代码:
pen=QPen(Qt.SolidLine)#将画线设置为实线
pen.setColor(QColor(255,255,0,30))#设置画笔的颜色和透明度
pen.setWidth(self.linewidth)#设置画笔的宽度
#根据鼠标位值进行随意画线,
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
painter.drawLine(self.start_point,self.current_point)
然后再次尝试快速画线:
可以很明显的看到此时达到了颜色均匀的需求,并且是透明的实线
此时我们再次进行像素读取:
我们通过opencv进行读取,发现确实是一样的,至此我们就完成了需求。
但是这个原理我并不明白,望大佬不吝赐教
其实用过onenote的小伙伴应该知道,onenote上面的那个黄色的画笔和刚才实现的效果是一样的
——————————————————————————————
更新:
今天又发现了另外一种导致像素不一致的原因;
例如用像素(0,255,255)的画笔在.tif格式上的图片画线后,如果将画线后的图片保存为.jpg,然后读取图片的像素值发现会有一些像素差,变成了(3,254,255),其他颜色也是这样。所以推测图片间的格式转换会导致像素微变。目前还不确定,待以后进一步学习
相关文章
onenote软件一直是用户会选择使用的一款办公软件,给用户带来了许多的帮助,让用户的笔记内容更加的清晰直观,再加上软件中的功能是很强大的,用户在使用的过程中使用自己需要......
2023-01-12
用户使用onenote软件时可以找到自己需要的功能来协助自己,让自己简单轻松的将笔记内容整理出来,给自己带来了许多的帮助,因此用户开始喜欢使用这款办公软件,当用户在编辑笔......
2023-01-12
在onenote软件中用户可以编辑重要的笔记信息,当用户在编辑学科课程的笔记时,基本上会使用到软件的公式功能来解决输入的符号的难题,为用户节省了许多的记录时间,因此这款办......
2023-01-12
用户使用onenote软件时,一般会用来编辑学科课程笔记以及参与研究项目的重要数据信息等,这是因为这款办公软件可以让用户进行科学化的整理笔记信息,让自己的整个笔记内容可......
2023-01-12
在使用onenote软件时,用户可以真真切切的感受到软件中的功能是很丰富实用的,可以帮助自己解决遇到的编辑问题,因此onenote软件给用户带来了许多的帮助,当用户在编辑笔记时,......
2023-01-12