[解題] C++ 修圖方法、公式

看板HomeTeach作者 (幽靈)時間10年前 (2013/12/21 17:30), 編輯推噓5(502)
留言7則, 4人參與, 最新討論串1/1
1.對象: ←(年齡、性別缺一不可;漏掉一個水桶三天。) 22歲男 2.地點: ←(請注意自身安全、財物等。) 網路 3.科目: C++ 程式設計的修圖方法、公式 4.上課時間: 隨時 5.時薪:←(不能打"面議、詳談、可議、自行開價等;若限制水桶14天。) 500訂金,完成後再付1000 可議 6.條件:←(依據法令規範,不得限制性別,若限制了水桶14天。) 熟悉修圖,且給的答案須符合條件 7.聯絡方式:(若有限定電話需要在哪些時間撥打 請在此區附註) 站內信 8.附註: 我有一個case需要能夠修改圖像中R、G、B數值的功能, 目前我程式是弄最笨的方法, 假設要把圖像的R+10,那麼我就會跑雙迴圈去巡迴圖像上的每一點像素, 取出該像素的R、G、B後, 再將R+10,再將修改完後的R、G、B取代原像素,例如: for( int i=0 ; i<img.width(); ++i){   for( int j=0 ; j<img.height() ; ++j ){     QColor color = img.pixel(i,j) ; // 取出座標i,j的像素     int R = color.red() + valueR ; //取出該像素的r值後在加上要修改的大小                  //這裡的valueR是10     int G = color.green() + valueG ;     int B = color.blue() + valueB ;     color.setRGB (R,G,B); //將修改好的R、G、B傳回color     img.setPixel( i , j , color.rgb() ); //將color的RGB取代原像素的顏色   } } 可是這麼一來會變成圖像上黑的不黑、白的不白,所以這方法是錯的, 並不符和案主的需求 我上網查了很久,都找不到正確解答,有人說要把RGB轉成HSV來修改,改完後再轉回RGB 可是我不懂,如果我轉成HSV,那麼我R要+10以及G要-20的話HSV要如何調整? 也有人說是要把RGB轉成YUV,可是也是一樣的問題,我不知道要如何調整YUV 案主本身也不曉得什麼樣的公式才是他要的,案主只明白修出來的顏色對還是不對 因此必須要老闆說正確後,我才會將尾款付清 老闆曾經說PS的『色彩平衡』裡的『保留明度』應該就是他要的顏色 我上網找了一張原圖:http://ppt.cc/XXzB 以下兩張是將B+100改出來的圖案 沒有保留明度:http://ppt.cc/T-Oh 有保留明度:http://ppt.cc/zJpB 可以很明顯的看到,有保留明度的頭髮依然略顯黑色 老闆說這應該就是她需要的功能, 所以如果高手們知道這保留明度其中的公式的話 還希望能指教一下,感謝 價錢可議,謝謝 提醒:所張貼文章須符合法令所規範的薪資報酬,且不得限制性別等規定。 如違反將按照板規處分。 ---- 如使用者對於本篇文章想回覆者,請記得按M,回覆至作者信箱 誤發至板上三天內有權自行刪除一次,再犯者水桶兩週。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 49.158.60.5

12/21 18:07, , 1F
int → unsigned
12/21 18:07, 1F

12/21 18:09, , 2F
應該不是這個問題 當我沒推文
12/21 18:09, 2F

12/22 01:50, , 3F
c_and_cpp 也有人po類似的文,你們老闆是同一個嗎?XD
12/22 01:50, 3F

12/22 01:50, , 4F
下面推文的人方法就學理上蠻可行的,不過太久沒有寫程式
12/22 01:50, 4F

12/22 01:50, , 5F
了,無法幫忙><
12/22 01:50, 5F

12/22 16:00, , 6F
我覺得這滿簡單的 如果你還沒搞定可以問我
12/22 16:00, 6F

12/23 17:30, , 7F
應該只是要把明度扣回來吧
12/23 17:30, 7F
文章代碼(AID): #1IjL_7HN (HomeTeach)