Microsoft Office是由Microsoft(微軟)公司開發的一套辦公軟件套裝。常用組件有 Word、Excel、PowerPoint等。Microsoft Office是一套由微軟公司開發的辦公軟件,它為 Microsoft Windows 和 Mac OS X而開發。 ?問題背景: 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),其他顏色也是這樣。所以推測圖片間的格式轉換會導致像素微變。目前還不確定,待以后進一步學習 Office辦公軟件是辦公的第一選擇,這個地球人都知道。Microsoft Office 2010的新界面簡潔明快,標識也改為了全橙色。 |
溫馨提示:喜歡本站的話,請收藏一下本站!